#java #junit #mockito
#java #юнит #mockito #junit
Вопрос:
У меня есть следующий метод, для которого я пишу модульный тест:
public void myMethod(){
String url = "post url";
HttpHeaders httpHeaders = new HttpHeaders();
//adding attributes to httpHeaders object
ServiceCallDto serviceCallDto = new ServiceCallDto();
//adding attributes to serviceCallDto object for 1st call
String body1 = httpService.post(url, httpHeaders, serviceCallDto);
serviceCallDto = new ServiceCallDto();
//adding attributes to serviceCallDto object for 2nd call
String body2 = httpService.post(url, httpHeaders, serviceCallDto);
}
Вот что я попытался высмеять за этот метод
public void myMethod(){
ServiceCallDto serviceCallDto = new ServiceCallDto();
//adding attributes to serviceCallDto object for 1st call
when(httpService.post(anyString(), any(HttpHeaders.class), eq(serviceCall)))
.thenReturn("Resopnse String"));
serviceCallDto = new ServiceCallDto();
//adding attributes to serviceCallDto object for 2nd call
when(httpService.post(anyString(), any(HttpHeaders.class), eq(serviceCall)))
.thenReturn("Resopnse String"));
но мой метод возвращает нулевое значение после вызова метода post, я полагаю, что причина этого в том, что здесь я использую объект serviceCallDto, который создается внутри моего метода тестирования.
Есть ли какие-либо альтернативы этому?
Комментарии:
1. Не могли бы вы поделиться тем, как вы вызываете вызов post?
2. Строковый ответ = HTTPService.post(url, HttpHeaders, serviceCall);
3. Если вы покажете весь класс реализации и весь тестовый класс, у вас больше шансов получить ответ. Отредактируйте свой вопрос, чтобы включить эту информацию вместо фрагментов кода.
4. Скорее всего, ваши объекты ServiceCall не равны. Вы
equals
правильно реализовали?5. Вам нужен либо метод equals, либо сопоставитель аргументов.