2

いくつかのアクションをテストしようとしています。彼らは、Silhouette を使用して作成したセキュリティ関連のものが必要です。

で Silhouette の DI を構成するモジュールがsecurity.Moduleあり、私のconf/application.confファイルには次の行があります。

play.modules.enabled += "security.Module"

テストを実行すると、次のエラーが表示されます。

No implementation for com.mohiva.play.silhouette.api.Silhouette<security.JwtEnv> was bound.

security.Moduleクラスにブレークポイントを設定しても、トリガーされません。ただし、メインModuleクラスにブレークポイントを設定すると、そうなります。そのため、有効なモジュールが自動的にロードされるとGuiceApplicationBuildersecurity.Moduleのドキュメントに記載されているにもかかわらず、myがロードされていないことがわかります。

テストクラスで設定する方法は次の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セキュリティ モジュールをロードするために必要なものは何ですか?

4

1 に答える 1