我正在使用 Play 2.0.3 (Java) 并编写了以下代码。由于我的演员是异步的,我尝试在测试时将 AsyncResult 转换为 Result 类型,方法如下:
Result result = new Result() {
@Override
public play.api.mvc.Result getWrappedResult() {
return ((play.api.mvc.AsyncResult) callAction(controllers.routes.ref.Dashboard.index(),
authenticatedFakeRequest(lenderUser.getId())).getWrappedResult()).result().await().get();
}
};
assertThat(Integer.valueOf(status(result)), is(Integer.valueOf(OK)));
该代码在我编写的另一组测试中确实有效,但是当我在这种特殊情况下使用它时,它会引发以下运行时异常。我完全不知道为什么它适用于其他测试而不是在这里。在转到上述语句之前,我已经检查了结果的实例类型是 Result 类型而不是 AsyncResult。我很感激这方面的帮助,因为我是 Play 新手,无法在其 google 群组上找到答案。
java.lang.RuntimeException: Cannot extract the Status code from a result of type play.api.mvc.AsyncResult
at scala.sys.package$.error(package.scala:27)
at play.core.j.JavaResultExtractor$.getStatus(JavaResults.scala:38)
at play.core.j.JavaResultExtractor.getStatus(JavaResults.scala)
at play.test.Helpers.status(Helpers.java:122)
at functional.controllers.LenderDashboardTest.dashboardPageHasNoControlsToAccessOtherTeamMembersInboxes(LenderDashboardTest.java:97)