1

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)));

このコードは、私が作成した別の一連のテストで機能しますが、この特定のケースで使用すると、次のランタイム例外がスローされます。ここではなく、他のテストで機能した理由がまったくわかりません。上記のステートメントに進む前に、結果のインスタンスタイプがAsyncResultではなくResultタイプであることを確認しました。私は 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)
4

1 に答える 1

0

I just came across the same problem as you, and it seems updating Play to 2.1 has solved it for me. hopefully this helps

于 2013-03-20T15:46:15.733 に答える