Stack Overflow на русском Asked by witi on November 15, 2021
Уже второй день гуглю, но все безуспешно. Помогите, пожалуйста.. Необходимо протестировать метод контроллера EmployeeController. Метод:
@PostMapping("/current/update-email")
public ResponseEntity<String> updateEmail(@RequestBody String email) {
if (!StringUtils.isEmpty(email)) {
String emailVerificationPattern = "^[a-zA-Zа-яА-ЯёЁ0-9.-]+@[a-zA-Zа-яА-ЯёЁ0-9.-]+$";
Pattern validEmailPattern = Pattern.compile(emailVerificationPattern);
boolean isEmailValid = validEmailPattern.matcher(email).matches();
if (isEmailValid) {
Employee employee = securityService.getCurrentEmployee();
employee.setEmail(email);
employeeService.save(employee);
return ResponseEntity.ok("Email changed!");
} else {
return ResponseEntity.badRequest().body("Email value is invalid");
}
} else {
return ResponseEntity.badRequest().body("Email is empty");
}
}
Код самого реквеста на фронте:
export const updateEmail = (history, email) =>
fetch(`/hr-rest/employees/current/update-email`, {
method: "POST",
...getCommonJsonRequestProps(),
body: email,
})
.then(response => throwHttpErrors(response, history))
.then(response => response.json())
.then(users => users || []);
Собственно, что я имею сейчас:
@RunWith(SpringRunner.class)
@WebMvcTest(EmployeeController.class)
@ContextConfiguration(classes={MQAutoConfiguration.class, JmsAutoConfiguration.class})
public class EmployeeControllerTest {
@Autowired
private MockMvc mvc;
@Autowired
private ObjectMapper mapper;
@Autowired
private WebApplicationContext webApplicationContext;
@Before()
public void setup()
{
mvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
}
@Test
public void updateEmail() throws Exception
{
mvc.perform(MockMvcRequestBuilders
.post("/current/update-email")
.content(asJsonString(mapper.writeValueAsString("[email protected]")))
.contentType(MediaType.APPLICATION_JSON)
.accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(MockMvcResultMatchers.jsonPath("$.email").exists());
}
public static String asJsonString(final Object obj) {
try {
return new ObjectMapper().writeValueAsString(obj);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
Получаю ошибку:
EmployeeControllerTest.updateEmail:72 Status expected:<200> but was:<404>
Понимаю, что скорей всего контент описан неверно, но не знаю, как описать правильно.
Буду крайне рад любой помощи, спасибо.
На сколько я понимаю контроллер не был создан при инициализации контекста.
На мой взгляд наиболее правильно будет заменить @ContextConfiguration(classes={MQAutoConfiguration.class, JmsAutoConfiguration.class})
на @Import({MQAutoConfiguration.class, JmsAutoConfiguration.class})
Похожие обсуждения в английской версии:
Answered by Alexandr on November 15, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP