Несколько тестов с MockRestServiceServer - PullRequest
0 голосов
/ 27 марта 2020

Мои тесты выполняются при их отдельном выполнении. Когда я выполняю тестовый класс, один из них завершается неудачно:

java.lang.AssertionError: Further request(s) expected leaving 1 unsatisfied expectation(s).
0 request(s) executed.

Тестовый класс:

@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
@ActiveProfiles("test")
@Transactional
public class ProductListControllerIT {

    @Autowired RestTemplate restTemplate;
    @Autowired MockMvc      mvc;

    @Test
    public void testGet_1() throws Exception {
        MockRestServiceServer mockServer = MockRestServiceServer.createServer(restTemplate);
        mockServer.expect(ExpectedCount.once(),
            requestTo(/* any url */))
            .andExpect(method(HttpMethod.GET))
            .andRespond(withStatus(HttpStatus.OK)
                    .contentType(MediaType.APPLICATION_JSON)
                    .body(/* JSON-STRING */)
            );

        var model = mvc.perform(MockMvcRequestBuilders.get("/url")
            .andReturn().getModelAndView().getModel();

        mockServer.verify();

    }

    @Test
    public void testGet_2() throws Exception {
        MockRestServiceServer mockServer = MockRestServiceServer.createServer(restTemplate);
        mockServer.expect(ExpectedCount.once(),
            requestTo(/* any url */))
            .andExpect(method(HttpMethod.GET))
            .andRespond(withStatus(HttpStatus.OK)
                    .contentType(MediaType.APPLICATION_JSON)
                    .body(/* JSON-STRING */)
            );

        var model = mvc.perform(MockMvcRequestBuilders.get("/url")
            .andReturn().getModelAndView().getModel();

        mockServer.verify();

    }

}

Один тестовый проход, другой завершается неудачно с ошибкой сообщение, как описано выше.

Спасибо за подсказки.

1 Ответ

0 голосов
/ 27 марта 2020

Я прошу прощения. Я бегу в ловушку тайника. Первый тест активировал кэш для вызова rest, второй вызов rest во втором tets не был выполнен.

Я очищаю все кэши теперь после тестов:

@After
public void after() {
    mockServer.verify();
    cacheManager.getCacheNames().forEach(n -> cacheManager.getCache(n).clear());
}
...