Тестовое тело запроса restTemplate.postforEntity (url, request, ResponseObj.class) - PullRequest
0 голосов
/ 25 октября 2018

Как проверить запрос json, переданный в restTemplate.postForEntity.

Допустим, для метода ниже:

    void doAsyncCall(Int id){
        MyObject obj= mydao.getObject(id);
        ///do something 
        MyRequstObject myrequet = constructRequestfromObject(obj);// set some thing in request object form obj

        Myresponse resp = restTemplate.postForEntity(url,new 
        HttpEntitiy(myrequet), respone.class)

        if(resp.status==ok){
            Logger.log("done");
        }
   }

И в моем тестовом примере: -

Я хочу проверить, что передается методу postForEntity в запросе.

1) Это больше похоже на то, как я передаю правильный объект и его свойства для пост-вызова.

2) Есть ли у нас какой-либо способ доступа к запросу JSON в JUNIT, чтобы проверить договор о том, что передается

Пожалуйста, помогите.

1 Ответ

0 голосов
/ 25 октября 2018

Создайте макет restTemplate в своем тесте и вызовите doAsyncCall, а затем убедитесь, что restTemplate.postForEntity вызывается с правильным параметром.Чтобы утверждать объект, который передается методу, вы можете использовать ArgumentCaptor.capture().Например:

    ArgumentCaptor<HttpEntity> captor = ArgumentCaptor.forClass(HttpEntity.class);

    verify(restTemplate).postForEntity(eq("some url"), captor.capture(), response.class);
    HttpEntity value = captor.getValue();
    assertEquals("content here", value.getContent());
...