我的程序使用全局错误处理。当我使用fakeRequest()进行测试时,它抛出异常而不是触发我的错误处理程序。 我错过了一些配置吗?或者我如何测试我的全局错误处理程序。
以下是我目前的代码:
控制器:
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());
}
}
注意:当我运行应用程序时,错误处理按预期工作。
答案 0 :(得分:2)
单元测试流程中缺少错误处理程序是设计使然。它应该是那样的。
使用简单的路由器,您可以解决这个问题。
此链接可能对这两点有所帮助:https://github.com/playframework/playframework/issues/2484
此处不重复链接的内容。