Код: Выделить всё
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@AutoConfigureMockMvc
public class EmployeeControllerH2IT {
@Autowired
private MockMvc mockMvc;
@Autowired
private EmployeeRepository employeeRepository;
@Autowired
private ObjectMapper objectMapper;
private Employee employee;
@BeforeEach
void setup() {
employeeRepository.deleteAll();
employee =
Employee.builder().firstName("John").lastName("Doe").email("[email protected]").build();
}
@Test
void givenEmployeeObject_whenCreateEmployee_thenReturnSavedEmployee() throws Exception {
ResultActions response =
mockMvc.perform(post("/api/employees").contentType(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(employee)));
response.andDo(print()).andExpect(status().isCreated())
.andExpect(jsonPath("$.firstName", is(employee.getFirstName())))
.andExpect(jsonPath("$.lastName", is(employee.getLastName())))
.andExpect(jsonPath("$.email", is(employee.getEmail())));
assertThat(employeeRepository.count()).isEqualTo(1);
}
}
Теперь у меня вопрос: достаточно ли MockMvc для проверки правильных ответов сервера в интеграционных тестах? Или «настоящие» интеграционные тесты должны выполняться по сети (с использованием «настоящего» HTTP-клиента, такого как RestTemplate или OkHttp)? Я думаю, ответ «это зависит», но какие здесь аргументы за/против MockMvc?
Подробнее здесь: https://stackoverflow.com/questions/793 ... tion-tests