我有一個帶有 POST 的 Spring Boot 控制器。方法作業正常。我通過 POSTMAN 對其進行了測驗,并從 postgresql 中收到了 JSON。但我需要測驗它。
@RestController
@RequestMapping("/api")
public class FamilyController {
private final FamilyService familyService;
public FamilyController(FamilyService familyService) {
this.familyService = familyService;
}
@GetMapping("/getFamily/{familyId}")
public List<FamilyMember> getFamily(@PathVariable Integer familyId) {
return familyService.searchFamilyMember(familyId);
}
}
我創建了測驗:
@ExtendWith(SpringExtension.class)
@WebMvcTest(FamilyController.class)
class FamilyControllerTest {
@Autowired
private MockMvc mockMvc;
@Autowired
private ObjectMapper objectMapper;
@MockBean
private FamilyService service;
@Captor
private ArgumentCaptor<Family> argumentCaptor;
@Test
void createFamily() throws Exception {
Family family = new Family();
family.setId(1);
family.setFamilyName("Kowal");
family.setNrOfInfants(2);
family.setNrOfChildren(2);
family.setNrOfAdults(1);
Mockito.when(service.saveAndFlush(argumentCaptor.capture())).thenReturn(1);
mockMvc.perform(post("/api/createFamily")
.contentType(MediaType.APPLICATION_JSON)
.contentType(objectMapper.writeValueAsString(family)))
.andExpect(status().isCreated());
// .andExpect(header().exists("Location"))
// .andExpect(header().string("Location", "http://localhost/api/getFamily/1"));
assertThat(argumentCaptor.getValue().getFamilyName(), is("Kowal"));
}
當我運行測驗時,我收到如下錯誤:
WARN 15404 --- [ main] .w.s.m.s.DefaultHandlerExceptionResolver :
Resolved [org.springframework.web.HttpMediaTypeNotSupportedException:
Invalid mime type "{"id":1,"familyName":"Kowal","nrOfInfants":2,"nrOfChildren":2,"nrOfAdults":1,"familyMembers":[]};charset=UTF-8":
does not contain '/']
我究竟做錯了什么?
uj5u.com熱心網友回復:
問題是這一行:
.contentType(objectMapper.writeValueAsString(family)))
現在您正在內容型別標頭中發送物件,這就是您收到錯誤訊息的原因。
將其更改為:
.content(objectMapper.writeValueAsString(family)))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/456139.html
上一篇:獲取相關JPA物體的生成id
