Funktionstests in Play 2.4.6 bei Verwendung der Kompilierzeit DI

9

Ich benutze Play 2.4.6 mit Compile Time Dependency Injection und ScalaTest. Der Konstruktor des Controllers hat wenige Parameter und ich erstelle ihn in einem ApplicationLoader. Hier ist der Code:

%Vor%

Wenn ich den Test ausführe, erhalte ich den folgenden Fehler:

%Vor%

FakeApplication verwenden GuiceApplicationBuilder , was natürlich nicht funktioniert.

Was soll ich tun, um solche Tests durchzuführen?

Danke

    
roterl 05.01.2016, 21:26
quelle

5 Antworten

1
%Vor%

Es funktioniert in Play 2.5.1

    
Harry Laou 12.04.2016 12:30
quelle
0

Sie erhalten einen Fehler, weil die Tests nicht einmal in der Lage sind, eine Anwendung zu starten. Dies geschieht, weil Sie Dependency Injection in Ihren Controllern verwenden (wie die Fehlermeldung anzeigt), und Sie müssen sie als classes deklarieren, anstatt als objects . Wie Sie in den Dokumenten sehen können:

%Vor%

Wenn Ihr Controller eine Abhängigkeit hat, die injiziert werden soll, sollten Sie die @Inject Annotation in Ihrem Controller-Konstruktor verwenden (siehe auch die Dokumente ). Pro Instanz:

%Vor%

Sie können auch die Zeitdokumente zur Zeitabhängigkeit kompilieren lesen, wenn Sie sie anstelle von Laufzeit-DI verwenden .

    
marcospereira 06.01.2016 03:46
quelle
0

Wenn Sie specs2 verwenden, können Sie es tun. siehe Ссылка Aber du verlierst die schöne api.

Scalatest / scalatest-plus hat etwas Funkhaftes mit dem DI (guice) gemacht: (

    
etaty 11.01.2016 14:30
quelle
0

Ich stehe vor dem gleichen Problem wie du. Ich habe keine befriedigende Lösung, das Folgende ist nur ein Workaround: Ich landete schließlich

%Vor%

in meiner WithApplicationLoader-Klasse

Ich habe auch Ссылка gefunden, mit dem Sie ws-Aufrufe vortäuschen können. Aber das wollen wir hier nicht.

    
lapislazuli 19.01.2016 16:42
quelle
0

Ich vermute, dass das Merkmal OneAppPerSuite nicht Ihren benutzerdefinierten Anwendungslader verwendet. Sie müssen möglicherweise die Anwendungskonstruktion, die von diesem Merkmal stammt, außer Kraft setzen und dafür sorgen, dass Ihr benutzerdefinierter Lader verwendet wird.

sieht aus wie hier ein Beispiel mit scalatest: Ссылка

    
handler 11.08.2016 03:57
quelle

Tags und Links