【发布时间】:2017-02-11 07:42:21
【问题描述】:
在尝试编写测试时,我从 Play 收到此警告:
您在范围内没有隐式应用程序。如果您想将当前正在运行的应用程序带入上下文,请使用依赖注入。
我发现如果我添加这个导入,它神奇地解决了应用程序在范围内的问题:
import play.api.Play.current
但是它会警告你
不推荐使用对象 Play 中的当前方法:这是对应用程序的静态引用,请改用 DI
如何使用依赖注入来获得相同的结果?这是我需要它的地方:
class TestSpec extends PlaySpec with OneAppPerSuite { ... }
编辑:我确实找到了this post,但我不知道答案如何为我提供隐式 Application 的线索。
【问题讨论】:
-
很大程度上取决于您要使用哪个 DI
-
我猜是 Guice,如果这有意义的话。它应该作为依赖项插入与
Play.current全局插入的等效项。 -
您究竟需要
current提供什么? -
好吧,警告说“您在范围内没有隐式应用程序”,所以我需要它。
Configuration或Environment都没有给我任何线索,让我知道如何处理它们以获得隐含的Application。此外,如果我像在控制器中那样在TestSpec中注入一些东西,测试就不再运行了。我虽然每个人都至少经历过一次同样的问题。
标签: scala playframework playframework-2.0