问题标签 [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.

0 投票
1 回答
232 浏览

scala - DI 绑定到子类

我想知道是否可以使用以下语法绑定依赖项:

(这是从测试中获取的,模块中的实际绑定稍微冗长一些)

其中SessionAuthenticator具有以下签名:

身份验证器

但我得到的只是编译期间的以下堆栈跟踪:

这样我可以选择在应用程序中只Authenticator使用一次Module并像这样注入它:

代替:

我有哪些选择?

0 投票
1 回答
353 浏览

scala - 使用 Scaldi 时出现编译错误

我正在遵循Scaldi 文档中提到的步骤。以下是我的代码。

我收到以下编译错误。

有人可以帮我解决这个问题吗?

0 投票
2 回答
612 浏览

scala - Play和Scala的依赖注入框架?

我来自春天背景,我们Dependency Injections在项目中使用。现在我开始了Play-Framework,我选择 Scala 进行开发。对于 Scala,我想使用依赖注入,我发现有很多Dependency Injections框架可用于 Scala。Spring 还提供了对 Scala 依赖注入框架的支持。但是我只需要IOC容器,所以不需要使用spring。在Play-Framework文档中,他们使用 Google-Guice 进行依赖注入框架。但我还发现了SCALDI一个不错的 Scala 依赖注入框架。

我仍然很困惑哪些Dependency Injection框架适用于ScalaPlay-Framework. 还有编译时类型的安全框架可用。请建议我,选择哪个Dependency Injection框架?

0 投票
1 回答
55 浏览

scala - 如何注册具有延迟实例化和单例的绑定

我是新来的斯卡尔迪。我在我的云环境配置中使用了一个类,我希望在其中发生两件事。

将 [EnvironmentInfo] 绑定到新的 EnvironmentInfo initWith(_.init())

首先,我希望它是一个单例。它检索运行时信息(在本例中为 Google AppEngine),它应该在实例化时执行一次。似乎 initWith 是一个不错的选择。

接下来,我希望实例化延迟到第一个请求。按照执行路径,它在第一次调用之前就被实例化了。

如果我可以延迟实例化,那么 initWith 应该移至类构造函数。

0 投票
1 回答
168 浏览

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

0 投票
2 回答
2964 浏览

scala - Scala中的隐式抽象类构造函数参数和继承

我对 Scala 还很陌生,一直在尝试学习和理解隐式转换和参数,并且遇到了一个让我感到困惑的场景。

对于上下文,我正在使用 Scaldi 在 Akka 应用程序中进行依赖注入,并希望从抽象类继承多个可注入的 Actor。我相信我无法准确地使抽象类成为特征,因为我们需要Injector通过构造函数参数使隐式可用以利用框架。

展示我所看到的行为的一个非常人为的示例如下:

我原以为一切正常,但我得到了一个编译错误:

如果我将隐式参数添加到具体类中,就像这样,事情会起作用:

我认为我的困惑源于隐式参数的工作方式——在我所描述的情况下,它们不是由子类继承的吗?有人可以 ELI5 在我的示例中发生什么或指出可以帮助解决问题的参考吗?

谢谢!

0 投票
0 回答
135 浏览

scala - 带有 Scaldi 的 Specs2 - 调用了错误的隐式注入器

我正在尝试使用 scaldi 和 specs2 进行测试。在测试中,我需要重写使用注入的 ProxyManipulator 的 StringManipulator 函数。ProxyManipulator 接受一个字符串并在 Future 中返回其大写。测试中的替换操纵器返回一个 Future("Test Message")。

这是发生注入的 StringManipulator 类:

我正在使用包含隐式注入器的 package.object:

这是使用新绑定的 specs2 测试:

问题在于,当测试运行时,StringManipulator 类仍在使用原始代理操纵器,而不是在 TestModule 中传递的那个。有任何想法吗?

0 投票
2 回答
313 浏览

scala - 玩 2.4 Scaldi WS 测试

我想用一个假服务器测试一个 WS 客户端,就像它在 Play 2.4 文档中解释的那样:https ://www.playframework.com/documentation/2.4.x/ScalaTestingWebServiceClients

但我正在使用 Scaldi 进行 DI,我无法调整 Play 的文档代码以使用 Scaldi。

有人能帮我吗 ?

适应的代码主要是这样的(来自 Play doc):

0 投票
1 回答
98 浏览

scala - 在测试和模拟方面应该如何实现 Scaldi 模块(对该模块不熟悉)?

我的根包对象中有一个隐式 scaldi 模块,因此任何组件都可以隐式使用注入器。

该模块如下所示:

Scaldi 文档说不建议绑定已经初始化的模块,因此我添加了附加模块以用于测试/模块重用,并将其与预定义的模块聚合。我做对了吗?

0 投票
1 回答
495 浏览

scala - 迁移到 Play 2.5 后测试中的 ReactiveMongo ConnectionNotInitialized

将我的 Play (Scala) 应用程序迁移到 2.5.3 后,使用 ReactiveMongo 对我的代码进行的一些测试现在在设置中失败了。

这是我使用 ScalaTest 的代码:

在插入行,我得到这个:

reactivemongo.core.errors.ConnectionNotInitialized: MongoError['连接缺少元数据(如协议版本等)连接池可能正在初始化。']

我尝试了很多东西,比如collection用 alazy val而不是def. 但没有任何效果。

任何有关如何让我的测试再次通过的见解都值得赞赏。