1

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?

Antwort

0

Ich habe das behoben. Das Problem war, dass mein security.Module Konstruktor args nahm:

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

denen es befestigt Entfernen.

+0

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

+0

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