Ich versuche einige Aktionen zu testen. Sie benötigen meine Sicherheitsausrüstung, die ich mit Silhouette erstellt habe.Play Framework GuiceApplicationBuilder nicht geladen aktiviert Modulkonfigurationen
Ich habe ein Modul die DI für Silhouette in security.Module
, und in meiner conf/application.conf
Datei zu konfigurieren habe ich die Zeile:
play.modules.enabled += "security.Module"
Wenn ich meine Tests ausführen bekomme ich eine Fehlermeldung, dass:
No implementation for com.mohiva.play.silhouette.api.Silhouette<security.JwtEnv> was bound.
Wenn ich einen Haltepunkt in meiner security.Module
Klasse festlegen, wird es nie ausgelöst. Wenn ich jedoch einen Breakpoint in meiner Hauptklasse Module
setze, ist es. So kann ich sehen, dass mein security.Module
nie geladen wird, obwohl die Dokumentation für GuiceApplicationBuilder besagt, dass aktivierte Module automatisch geladen werden.
Hier ist, wie ich GuiceApplicationBuilder
in meiner Test-Klasse bin Konfiguration (basierend auf scalatest):
class TestUserController extends PlaySpec with OneAppPerTest with Results {
val identity = UserDao(
id = Some(10),
email = Some("[email protected]"),
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
//...
}
Was bin ich fehle GuiceApplicationBuilder
zu bekommen, um mein Sicherheitsmodul zu laden?
Ich habe das gleiche Problem, obwohl Konstruktorargumente für Modul. Ich benutze 'GuiceOneAppPerSuite'. Die Anwendung funktioniert normal, aber beim Testen lädt sie meine Modulklasse nicht, obwohl sie in der application.conf aktiviert ist. 'mvn test' funktioniert, aber die Ausführung eines Einzeltests aus der Eclipse schlägt fehl – nir
Ich habe es gerade behoben, indem ich den Ausgabeordner für app, conf und test directory unter build path korrigiere. Irgendwie hatte ich sie zum Trennen von Verzeichnis dann üblichen Zielverzeichnis von Maven. – nir