2016-10-22 2 views
1

Mein Programm verwendet globale Fehlerbehandlung. Wenn ich fakeRequest() zum Testen verwende, löst es eine Exception aus, statt meinen Fehlerhandler auszulösen. Fehle ich etwas Konfiguration? Oder wie kann ich meinen globalen Error-Handler testen?Play 2.5.x Junit Test Fehlerbehandlung mit FakeRequest

Im Folgenden finden Sie meine aktuellen Code:

Controller:

public class MyController { 
    public Result MyService() { 
     if (true) throw new RuntimeException("exception"); 
    } 
} 

Fehlerbehandler:

@Singleton 
public class MyErrorHandler extends DefaultHttpErrorHandler { 

    @Inject 
    public MyErrorHandler (Configuration configuration, Environment environment, OptionalSourceMapper sourceMapper, Provider<Router> routes) { 
    super(configuration, environment, sourceMapper, routes); 
    } 

    @Override 
    public CompletionStage<Result> onServerError(Http.RequestHeader request, Throwable exception) { 
    return CompletableFuture.completedFuture(ok(exception.getMessage())); 
    } 
} 

Test:

public class MyTest { 
    @Test 
    public void testMethod() { 
    Result result = route(fakeRequest("GET", "/MyService")); 
    assertEquals(OK, result.status()); 
    } 
} 

Hinweis: Wenn ich Anwendung ausführen, die Fehler Handhabung ist Arbeiten wie erwartet.

Antwort

2

Das Fehlen des Fehlerhandlers im Einheitstestablauf ist von Entwurf. Es soll so sein.

Mit einem einfachen Router können Sie dieses Problem umgehen.

Dieser Link könnte für diese beiden Punkte eine Hilfe sein: https://github.com/playframework/playframework/issues/2484

nicht den Inhalt der Link hier zu wiederholen.

Verwandte Themen