问题标签 [scaldi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - DI 绑定到子类
我想知道是否可以使用以下语法绑定依赖项:
(这是从测试中获取的,模块中的实际绑定稍微冗长一些)
其中SessionAuthenticator具有以下签名:
和身份验证器:
但我得到的只是编译期间的以下堆栈跟踪:
这样我可以选择在应用程序中只Authenticator
使用一次Module
并像这样注入它:
代替:
我有哪些选择?
scala - Play和Scala的依赖注入框架?
我来自春天背景,我们Dependency Injections
在项目中使用。现在我开始了Play-Framework
,我选择 Scala 进行开发。对于 Scala,我想使用依赖注入,我发现有很多Dependency Injections
框架可用于 Scala。Spring 还提供了对 Scala 依赖注入框架的支持。但是我只需要IOC容器,所以不需要使用spring。在Play-Framework
文档中,他们使用 Google-Guice 进行依赖注入框架。但我还发现了SCALDI
一个不错的 Scala 依赖注入框架。
我仍然很困惑哪些Dependency Injection
框架适用于Scala
和Play-Framework
. 还有编译时类型的安全框架可用。请建议我,选择哪个Dependency Injection
框架?
scala - 如何注册具有延迟实例化和单例的绑定
我是新来的斯卡尔迪。我在我的云环境配置中使用了一个类,我希望在其中发生两件事。
将 [EnvironmentInfo] 绑定到新的 EnvironmentInfo initWith(_.init())
首先,我希望它是一个单例。它检索运行时信息(在本例中为 Google AppEngine),它应该在实例化时执行一次。似乎 initWith 是一个不错的选择。
接下来,我希望实例化延迟到第一个请求。按照执行路径,它在第一次调用之前就被实例化了。
如果我可以延迟实例化,那么 initWith 应该移至类构造函数。
scala - Scaldi:绑定 [T < AkkaInjectable] 到 TestProbe.ref
我正在尝试A
使用 Scaldi 在我的 Play 2.4 应用程序中测试一个 Actor。这个演员正在打电话injectActorRef[B]
,我想用TestKit.TestProbe
.
在我的 specs2 中,我希望能够在B
向 actor 提供相应的 TestKit.TestProbe.ref 的同时检索用于模拟的探针A
。
我想做这样的事情:
问题是 ref 是一个,因此与预期的类型ActorRef
不匹配。B
有没有一种干净的方法可以做到这一点?我们可以指定一个 ActorRef 返回injectActorRef[B]
吗?
我最终覆盖了 Actor 的绑定A
。
scala - Scala中的隐式抽象类构造函数参数和继承
我对 Scala 还很陌生,一直在尝试学习和理解隐式转换和参数,并且遇到了一个让我感到困惑的场景。
对于上下文,我正在使用 Scaldi 在 Akka 应用程序中进行依赖注入,并希望从抽象类继承多个可注入的 Actor。我相信我无法准确地使抽象类成为特征,因为我们需要Injector
通过构造函数参数使隐式可用以利用框架。
展示我所看到的行为的一个非常人为的示例如下:
我原以为一切正常,但我得到了一个编译错误:
如果我将隐式参数添加到具体类中,就像这样,事情会起作用:
我认为我的困惑源于隐式参数的工作方式——在我所描述的情况下,它们不是由子类继承的吗?有人可以 ELI5 在我的示例中发生什么或指出可以帮助解决问题的参考吗?
谢谢!
scala - 带有 Scaldi 的 Specs2 - 调用了错误的隐式注入器
我正在尝试使用 scaldi 和 specs2 进行测试。在测试中,我需要重写使用注入的 ProxyManipulator 的 StringManipulator 函数。ProxyManipulator 接受一个字符串并在 Future 中返回其大写。测试中的替换操纵器返回一个 Future("Test Message")。
这是发生注入的 StringManipulator 类:
我正在使用包含隐式注入器的 package.object:
这是使用新绑定的 specs2 测试:
问题在于,当测试运行时,StringManipulator 类仍在使用原始代理操纵器,而不是在 TestModule 中传递的那个。有任何想法吗?
scala - 玩 2.4 Scaldi WS 测试
我想用一个假服务器测试一个 WS 客户端,就像它在 Play 2.4 文档中解释的那样:https ://www.playframework.com/documentation/2.4.x/ScalaTestingWebServiceClients
但我正在使用 Scaldi 进行 DI,我无法调整 Play 的文档代码以使用 Scaldi。
有人能帮我吗 ?
适应的代码主要是这样的(来自 Play doc):
scala - 在测试和模拟方面应该如何实现 Scaldi 模块(对该模块不熟悉)?
我的根包对象中有一个隐式 scaldi 模块,因此任何组件都可以隐式使用注入器。
该模块如下所示:
Scaldi 文档说不建议绑定已经初始化的模块,因此我添加了附加模块以用于测试/模块重用,并将其与预定义的模块聚合。我做对了吗?
scala - 迁移到 Play 2.5 后测试中的 ReactiveMongo ConnectionNotInitialized
将我的 Play (Scala) 应用程序迁移到 2.5.3 后,使用 ReactiveMongo 对我的代码进行的一些测试现在在设置中失败了。
这是我使用 ScalaTest 的代码:
在插入行,我得到这个:
reactivemongo.core.errors.ConnectionNotInitialized: MongoError['连接缺少元数据(如协议版本等)连接池可能正在初始化。']
我尝试了很多东西,比如collection
用 alazy val
而不是def
. 但没有任何效果。
任何有关如何让我的测试再次通过的见解都值得赞赏。