首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建集成测试

创建集成测试
EN

Stack Overflow用户
提问于 2021-10-27 12:26:01
回答 1查看 38关注 0票数 0

我是个编写集成测试的新手。我必须编写代码来检查get方法是否返回代码200。问题是这种方法非常复杂。我使用了3个API来让它运行。下面我留下测试方法的代码:

代码语言:javascript
复制
@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,我在最后一行做错了什么。我还留下了正在测试的方法的代码:

代码语言:javascript
复制
@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);

}

在日志中,我可以看到,只有最后一行生成错误:

代码语言:javascript
复制
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 = []

我该怎么做才能让它工作呢?

EN

回答 1

Stack Overflow用户

发布于 2021-10-27 12:37:44

是否没有tag 1?mockMvc.perform(get(TAGS_API +1+ANALYSES_API)).andExpect().isOk();

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69738651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档