2016-10-22 13 views
1

私のプログラムでは、グローバルなエラー処理が使用されます。テストにfakeRequest()を使用すると、エラーハンドラをトリガする代わりに例外がスローされます。 設定が欠落していますか?または、グローバルエラーハンドラをどのようにテストできますか?以下はfakeRequestを使用して2.5.x junitテストのエラー処理を処理する

私の現在のコードです:

コントローラー:

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

のErrorHandler:

@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())); 
    } 
} 

テスト:

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

注:私は、アプリケーションを実行すると、エラー取り扱いは期待どおりに動作します。

答えて

2

ユニットテストフローでのエラーハンドラの欠如は設計によるものです。それはそういう意味です。

シンプルなルータでは、この問題を回避できます。

このリンクは、これらの点の両方のためのいくつかの助けになるかもしれません:

https://github.com/playframework/playframework/issues/2484は、ここでは、リンクの内容を繰り返していません。