56% coverage
Closed this issue · 2 comments
https://github.com/IvailoB/SoftUni-Java-WEB/tree/main/CarWeb
все още имам проблем с 2 теста.
Знам че проблема е в мен не в тестовете, но все пак колко ги мъчих и нищо.
Здравей!
Относно първият тест.
@Test
void testAddConfirm() throws Exception {
mockMvc.perform(MockMvcRequestBuilders.post("/cars/add"))
.andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.view().name("redirect:/cars/details/{id}"));
}
Пускаш POST request с празно body. Контролерът обаче очаква нещо съвсем друго. Някакво DTO + principal,
няма и BindingResult след него:
@PostMapping("/add")
public String addConfirm(@Valid AddCarDTO addCarDTO,
Principal principal) throws IOException {
}
В такъв случай спринг връща грешка 400 - рекуестът е невалиден:
java.lang.AssertionError: Status expected:<200> but was:<400>
Expected :200
Actual :400
Как се емулира POST request -> Тук.
Как се слага тестов юзър заради спринг секюрити -> Тук.
Относно вторият тест:
@Mock
private UserService mockUserService;
Това е мокито мок. Т.е. това е нещо, което може да правиш в юнит тестове, а не в интегрейшън. В интегрейшън тестовете има една анотация @MockBean
, която не ти е необходима тук.
Това което ти е необходимо, например е WithMockUser
& Co. Виж предния ми отговор и започни оттам.
Ако продължават грижите, ще помагаме :-)
Поздрави,
Л.