我正在尝试测试一些动作。他们需要我使用Silhouette创建的安全资料。
我有一个模块可以在security.Module
中为剪影配置DI,在我的conf/application.conf
文件中我有一行:
play.modules.enabled += "security.Module"
当我运行测试时,我收到错误消息:
No implementation for com.mohiva.play.silhouette.api.Silhouette<security.JwtEnv> was bound.
如果我在security.Module
课程中设置断点,则永远不会触发。但是,如果我在我的主Module
类中设置断点,那就是。所以我可以看到我的security.Module
永远不会被加载,尽管GuiceApplicationBuilder的文档说自动加载了已启用的模块。
以下是我在测试类中构建GuiceApplicationBuilder
的方法(基于scalatest):
class TestUserController extends PlaySpec with OneAppPerTest with Results {
val identity = UserDao(
id = Some(10),
email = Some("testuser@example.com"),
createdAt = DateTime.parse("2016-11-11T11:11:11")
)
val loginInfo = LoginInfo("credentials", identity.email.get)
implicit val env = FakeEnvironment[JwtEnv](Seq(loginInfo -> identity))
implicit override def newAppForTest(td: TestData) = new GuiceApplicationBuilder()
.overrides(bind[UsersBlockedRepo].to[MockUsersBlockedRepo])
.build
//...
}
让GuiceApplicationBuilder
加载我的安全模块我缺少什么?
答案 0 :(得分:0)
我已经解决了这个问题。问题是我的security.Module
采用了构造函数args:
class Module(environment: PlayEnvironment,
configuration: Configuration) extends AbstractModule with ScalaModule {...}
删除修复它的那些。