Почему падают тесты WebMvcTest для проверки входных значений?

Рейтинг: -1Ответов: 1Опубликовано: 25.01.2023

Простой тест, но если добавить еще тесты где возвращается 200, то он будет падать, если запустить по одному то работают. Может нужно очищать контектст при запуске каждого теста? Тогда как? Закинул из всех методов в один, все отрабатывает, но если по разным тестам, то нет

@WebMvcTest(TestController::class)
@ExtendWith(SpringExtension::class)
internal class TestController {

    @Autowired
    lateinit var mockMvc: MockMvc

    @Autowired
    lateinit var objectMapper: ObjectMapper

    @MockBean
    lateinit var testService: testService

    @Test
    fun `test with invalid inn feedback input`() {
        val body = objectMapper.writeValueAsString(testInput)

        mockMvc.perform(
            post("/v1/test")
                .contentType("application/json")
                .content(body)
        ).andExpect(status().isBadRequest)
    }
}

Ответы

▲ 1Принят

Кажется, у вас есть неоднозначность между тестами, использующими одну и ту же заглушку.

Вы можете попробовать сбросить состояние заглушек перед каждым тестом, используя аннотацию @DirtiesContext:

@WebMvcTest(TestController::class)
@ExtendWith(SpringExtension::class)
@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD)
internal class TestController {
    ...