Модульное тестирование весеннего клиента веб-сервиса Классы Наследование WebServiceGatewaySupport - PullRequest
0 голосов
/ 11 января 2019

Я пытаюсь выполнить модульное тестирование клиента веб-службы при загрузке Spring. Мой клиент расширяет класс WebServiceGatewaySupport, и я использую Mockito framework.

Проблема в том, что я не могу высмеять метод суперкласса getWebServiceMethod

Быстрый поиск объясняет только интеграционные тесты с использованием пружины, а это не то, что мне нужно [ссылка]

в S / O было предложено макетировать весь базовый класс, но это также невозможно, поскольку модульные тесты находятся в одном пакете, а также я не хочу вручную имитировать класс пружины.

Я понимаю composition over inheritance, но является ли это допустимым вариантом использования для нарушения этого и как нам выполнить это модульное тестирование в этих случаях?

1 Ответ

0 голосов
/ 11 января 2019

Вы можете использовать внутреннего кота Springboot, используя @ AutoConfigureMockMvc

import javax.servlet.http.Cookie;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;
// plus some other that I skip for sake of simplicity


@RunWith(SpringRunner.class)
@SpringBootTest(classes = StandaloneApplication.class) // StandaloneClass is where you call SpringApplication.run
@AutoConfigureMockMvc
public class DictionaryControllerTest  {
   private final static ObjectMapper mapper = new ObjectMapper();

   @Test
   public void createDictionary() throws Exception {
       Cookies cookies;  // add cookies if you need
       String body; // add a body if you need
       MockHttpServletRequestBuilder request = requestBuilder(post("/dictionaries"), body, cookies);
       ResultActions resultActions = mockMvc.perform(request);
       // you can also extract the content
       CollectionDocument dictionary = mapper.readValue(resultActions.andReturn().getResponse().getContentAsString(), CollectionDocument.class);
       // then do the test
       Assert.assertNotNull(dictionary.getId());
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...