获取“无法从类型play.api.mvc.AsyncResult的结果中提取状态代码”,即使结果类型已转换为Result

时间:2013-03-13 18:12:30

标签: playframework playframework-2.0

我正在使用Play 2.0.3(Java)并编写了以下代码。由于我的actor是异步的,我尝试在测试时将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。我很感激你的帮助,因为我是Pl​​ay的新手并且无法在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)

1 个答案:

答案 0 :(得分:0)

我遇到了和你一样的问题,似乎更新Play to 2.1已经为我解决了这个问题。希望这有助于