いくつかのアクションをテストしようとしています。彼らは、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
セキュリティ モジュールをロードするために必要なものは何ですか?