2016-10-22 58 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()); 
    } 
} 

注:當我運行應用程序時,錯誤處理是按預期工作。

回答