1

このテストから戻り値を取得するにはどうすればよいですか?私のコントローラーは戻ります@Responsebody Meal

@Test
// @Transactional
public void testPost() {

    Profile profile = ProfileUtil.getProfile();
    profileService.save(profile);

    String requestUri = "/user/" + profile.getId() + "/meals";

    request.setMethod("POST");
    request.setRequestURI(requestUri);
    Object handler;

    try {

        handler = handlerMapping.getHandler(request).getHandler();
        handlerAdapter.handle(request, response, handler);
        Assert.assertEquals(200, response.getStatus());

        //I would like to have the controller return value here! :) 
    } catch (Exception e) {

    }

}
4

1 に答える 1

2

2つの選択肢があります。

  • ハンドラマッピング/サーブレットレイヤーを経由する代わりに、コントローラを直接呼び出します。このようにして、オブジェクトを取得するだけで、そのMealオブジェクトに対してアサーションを実行できます。

  • オブジェクトからの応答を解析しresponseます。あなたの場合、MealオブジェクトはSpring MVCによって取得され、おそらくXMLまたはJSONにマーシャリングされました。元のオブジェクトは失われます。XML/JSON文字列を取得して解析し、アサーションを実行することしかできません(たとえば、XPathを使用)。

どちらのアプローチにも利点があります。コントローラ自体をテストする場合は、最初のものをお勧めします。後者はより複雑ですが、マーシャリングをテストできます。

于 2012-10-01T17:35:03.160 に答える