播放框架GuiceApplicationBuilder未加载启用模块配置

时间:2016-12-01 16:30:43

标签: scala playframework scalatest playframework-2.5 silhouette

我正在尝试测试一些动作。他们需要我使用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加载我的安全模块我缺少什么?

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题。问题是我的security.Module采用了构造函数args:

class Module(environment: PlayEnvironment,
         configuration: Configuration) extends AbstractModule with ScalaModule {...}

删除修复它的那些。