3

テストしたいRest-Serviceを書きました。サーバーを実行せずに JUnit テストを実行したい。このために、RestEasy のサーバー側モック フレームワークを使用しています。

私の質問は、このフレームワークで、マーシャリングされた Java オブジェクトを Http-Body で使用して、どのように Http-Put または Http-Post リクエストを作成できるかということです。

以下のコードは Http-Get では正常に動作しますが、Put または Post を作成する方法については、誰かがこのサンプル コードを取得した可能性があります。

@Test
public void testClient() throws Exception {

    Dispatcher dispatcher = MockDispatcherFactory.createDispatcher();

    POJOResourceFactory noDefaults = new POJOResourceFactory(
            MyClass.class);
    dispatcher.getRegistry().addResourceFactory(noDefaults);

    {
        MockHttpRequest request = MockHttpRequest.get("/message/test/"
                + requestParam);
        MockHttpResponse response = new MockHttpResponse();

        dispatcher.invoke(request, response);
        assertEquals(HttpServletResponse.SC_OK, response.getStatus());

    }
}
4

1 に答える 1

6

少し遅い応答ですが、誰かに役立つかもしれません。これは、通常、PUT リクエストをテストする方法です。それが役に立てば幸い

@Test
public void testPUT() throws Exception {      
      POJOResourceFactory noDefaults = new POJOResourceFactory(REST.class);

      Dispatcher dispatcher = MockDispatcherFactory.createDispatcher();
      dispatcher.getRegistry().addResourceFactory(noDefaults);

      String url = "your_url_here";   

      MockHttpRequest request = MockHttpRequest.put(url);
      request.accept(MediaType.APPLICATION_JSON);
      request.contentType(MediaType.APPLICATION_JSON_TYPE);
      // res being your resource object
      request.content(res.toJSONString().getBytes());

      MockHttpResponse response = new MockHttpResponse();
      dispatcher.invoke(request, response);

    Assert.assertEquals( HttpStatus.SC_CREATED,response.getStatus());

}
于 2013-08-07T13:48:25.160 に答える