Методы restTemplate объекта mocked spring bean возвращают ноль - PullRequest
1 голос
/ 06 марта 2019

Я работаю над приложением весенней загрузки, которое выполняет три внешних вызова API из сервисного уровня, поэтому при написании интеграционных тестов я пытаюсь переопределить фактический компонент RestTemplate с помощью имитированного компонента RestTemplate и при создании трех вызовы внешнего API, которые я указал для возврата некоторых данных

given(this.restTemplate.exchange(ArgumentMatchers.any(), ArgumentMatchers.any(), ArgumentMatchers.any(),
            ArgumentMatchers.isA(new ParameterizedTypeReference<TestData1>() {
            }.getClass()))).willReturn(ResponseEntity.accepted().body(new TestData1()));

    given(this.restTemplate.exchange(ArgumentMatchers.any(), ArgumentMatchers.any(), ArgumentMatchers.any(),
            ArgumentMatchers.isA(new ParameterizedTypeReference<TestData2>() {
            }.getClass()))).willReturn(ResponseEntity.accepted().body(new TestData2()));

    given(this.restTemplate.exchange(ArgumentMatchers.any(), ArgumentMatchers.any(), ArgumentMatchers.any(),
            ArgumentMatchers.isA(new ParameterizedTypeReference<List<TestData3>>() {
        }.getClass()))).willReturn(ResponseEntity.accepted().body(Arrays.asList(new TestData3())));

Но проблема в том, что когда вызывается метод restTemplate.exchange, он возвращает null в качестве ответа вместо ResponseEntity с соответствующим телом

TestConfig класс

@TestConfiguration
@ActiveProfiles("test")
@Profile("test")
public class TestConfig {

     @Bean
     public RestTemplate restTemplae() {
         return Mockito.mock(RestTemplate.class);
      }

TestClass

@SpringBootTest(classes = { TestConfig.class })
@ActiveProfiles("test")
@Profile("test")
@RunWith(SpringJUnit4ClassRunner.class)
public class TestClass {

 @Autowired
 private RestTemplate restTemplate;

  @Test
  public void taskTest() {

    //code

    given(this.restTemplate.exchange(ArgumentMatchers.any(), ArgumentMatchers.any(), ArgumentMatchers.any(),
        ArgumentMatchers.isA(new ParameterizedTypeReference<TestData1>() {
        }.getClass()))).willReturn(ResponseEntity.accepted().body(new TestData1()));

given(this.restTemplate.exchange(ArgumentMatchers.any(), ArgumentMatchers.any(), ArgumentMatchers.any(),
        ArgumentMatchers.isA(new ParameterizedTypeReference<TestData2>() {
        }.getClass()))).willReturn(ResponseEntity.accepted().body(new TestData2()));

given(this.restTemplate.exchange(ArgumentMatchers.any(), ArgumentMatchers.any(), ArgumentMatchers.any(),
        ArgumentMatchers.isA(new ParameterizedTypeReference<List<TestData3>>() {
    }.getClass()))).willReturn(ResponseEntity.accepted().body(Arrays.asList(new TestData3())));

 //code
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...