При запуске теста данные не возвращаются, если контроллер вызывает метод NotesService.save(). Он просто возвращает MockHttpServletResponse со статусом = 200, сообщением об ошибке = null и телом = (это просто пробел).
Он возвращает объект JSON, если объект Note возвращается непосредственно из контроллера. класс, но он должен работать при использовании NotesService.save().
@WebMvcTest
@ExtendWith(SpringExtension.class)
@AutoConfigureMockMvc
public class NotesControllerTest {
@MockBean
private NotesService notesService;
@Autowired
private MockMvc mockMvc;
@Autowired
private ObjectMapper objectMapper;
@Test
public void testSave() throws Exception {
Note noteToCreate = new Note(null, "Sample Note", "Hello, World!");
Note createdNote = new Note(1L, "Sample Note", "Hello, World!");
when(notesService.save(noteToCreate)).thenReturn(createdNote);
ResultActions response = mockMvc.perform( post("/api/notes")
.contentType(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(noteToCreate))
);
response.andDo(print())
.andExpect(MockMvcResultMatchers.status().isOk());
}
}
@RestController
@RequestMapping("/api/notes")
public class NotesController {
@Autowired
private NotesService notesService;
@PostMapping
public Note save (@RequestBody Note note ){
return notesService.save(note);
}
}
@Service
public class NotesService {
public Note save(Note note){
return new Note(1L, "Sample Note", "Hello, World!");
}
}
Подробнее здесь: https://stackoverflow.com/questions/788 ... etresponse
Тест HTTP Post Request Spring Boot Controller возвращает MockHttpServletResponse, который имеет пустое тело, несмотря на ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение