我是个编写集成测试的新手。我必须编写代码来检查get方法是否返回代码200。问题是这种方法非常复杂。我使用了3个API来让它运行。下面我留下测试方法的代码:
@Test
@WithUserDetails("operator")
public void getAnalysesByTagId_shouldReturn200() throws Exception {
objectMapper.enable(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);
MvcResult mvcResult = mockMvc.perform(multipart("/documents")
.file(getMetaDataFile("fileForAnalysisAndTags" + new Random().nextInt() + ".xlsx")))
.andExpect(status().isCreated()).andReturn();
DocumentCreateResponse document = parseResponse(mvcResult, DocumentCreateResponse.class);
MvcResult mvcDocumentDetails = mockMvc.perform(get("/documents/" + document.getId() + "/details")).andReturn();
DocumentDetailsResponse documentDetailsResponse = parseResponse(mvcDocumentDetails, DocumentDetailsResponse.class);
MvcResult mvcResultTag = mockMvc.perform(get("/tags/" + documentDetailsResponse.getAreaId() + "/children")).andReturn();
List<TagResponse> tagResponses = parseResponseList(mvcResultTag, TagResponse.class);
mockMvc.perform(get(TAGS_API + 1 + ANALYSES_API)).andExpect(status().isOk());
}它返回代码404而不是200,我在最后一行做错了什么。我还留下了正在测试的方法的代码:
@GetMapping("tags/{tagId}/analyses")
@ApiOperation(value = "Find analyses associated with tag", produces = MediaType.APPLICATION_JSON_VALUE, notes = "Required Role: OPERATOR/USER")
@ApiResponses(value = {
@ApiResponse(code = 200, message = "Analyses found"),
@ApiResponse(code = 404, message = "Not found, incorrect tag ID"),
@ApiResponse(code = 500, message = "Server error, something went wrong"),
@ApiResponse(code = 401, message = "Request lacks valid authentication credentials.")
})
public ResponseEntity<List<FindAnalysisResponse>> getAnalysesByTagId(
@PathVariable("tagId") Long tagId) throws NotFoundException {
var analyses = service.getAnalysesByTagId(tagId)
.stream()
.map(findAnalysisMapper::fromAnalysis)
.collect(Collectors.toList());
return new ResponseEntity<>(analyses, HttpStatus.OK);
}在日志中,我可以看到,只有最后一行生成错误:
Async:
Async started = false
Async result = null
Resolved Exception:
Type = com.name.common.domain.NotFoundException
ModelAndView:
View name = null
View = null
Model = null
FlashMap:
Attributes = null
MockHttpServletResponse:
Status = 404
Error message = null
Headers = [Vary:"Origin", "Access-Control-Request-Method", "Access-Control-Request-Headers", Content-Type:"text/plain;charset=UTF-8", Content-Length:"15", X-Content-Type-Options:"nosniff", X-XSS-Protection:"1; mode=block", Cache-Control:"no-cache, no-store, max-age=0, must-revalidate", Pragma:"no-cache", Expires:"0", X-Frame-Options:"DENY"]
Content type = text/plain;charset=UTF-8
Body = "Tag not found"
Forwarded URL = null
Redirected URL = null
Cookies = []我该怎么做才能让它工作呢?
发布于 2021-10-27 12:37:44
是否没有tag 1?mockMvc.perform(get(TAGS_API +1+ANALYSES_API)).andExpect().isOk();
https://stackoverflow.com/questions/69738651
复制相似问题