使用fakeRequest播放2.5.x junit测试错误处理

时间:2016-10-22 08:14:38

标签: java junit error-handling playframework-2.0 junit4

我的程序使用全局错误处理。当我使用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());
  }
}

注意:当我运行应用程序时,错误处理按预期工作。

1 个答案:

答案 0 :(得分:2)

单元测试流程中缺少错误处理程序是设计使然。它应该是那样的。

使用简单的路由器,您可以解决这个问题。

此链接可能对这两点有所帮助:https://github.com/playframework/playframework/issues/2484

此处不重复链接的内容。