Java 我怎样才能把这个球扔给朱尼特
我在jira中得到了一个更新问题的函数,我想使用JUnit抛出捕获 这是我得到的函数:Java 我怎样才能把这个球扔给朱尼特,java,spring,testing,junit,jira,Java,Spring,Testing,Junit,Jira,我在jira中得到了一个更新问题的函数,我想使用JUnit抛出捕获 这是我得到的函数: @PutMapping(value=“/update/{issueKey}”) 公共责任 UpdateSue(@Validated@RequestBody EventDTO EventDTO,BindingResult,@PathVariable String issueKey) { info(“Entra en/update con el payload:{}”,eventDTO); if(result.h
@PutMapping(value=“/update/{issueKey}”)
公共责任
UpdateSue(@Validated@RequestBody EventDTO EventDTO,BindingResult,@PathVariable String issueKey)
{
info(“Entra en/update con el payload:{}”,eventDTO);
if(result.hasErrors())
{
ErrorResponseDTO ErrorResponseDTO=ErrorResponseDTO.getErrorResponseDTOFromBinding(结果,消息源);
返回新的ResponseEntity(errorResponseDTO,HttpStatus.BAD_请求);
}
尝试
{
SuccessResponseDTO SuccessResponseDTO=jiraService.update(eventDTO,issueKey);
info(“/update response{}”,successResponseDTO);
返回新的ResponseEntity(successResponseDTO,HttpStatus.OK);
}
捕获(EywaException EywaException)
{
logger.error(“Se ha producido un error en ACTIVATZAR un issue”,eywaException);
ErrorResponseDTO responseDTO=新的ErrorResponseDTO();
字符串errorMessage=messageSource.getMessage(eywaException.getMessage(),null,
LocaleContextHolder.getLocale());
responseDTO.addErrorResponseDTO(eywaException.getMessage().split(“\\”)[0],errorMessage);
返回新的ResponseEntity(responseDTO,HttpStatus.INTERNAL_SERVER_ERROR);
}
}
这就是我在JUnit中的内容
@Test
public void updateIssue_NonExistanceIssue_shouldReturnFail() throws Exception
{
when(jiraService.update(eventDTO, "")).thenReturn(successResponseDTO);
String json = "{\"summary\":\""+eventDTO.getSummary()+"\""+
", \"description\":\""+eventDTO.getDescription()+"\""+
", \"raised\":\""+eventDTO.getRaised()+"\""+
", \"issueType\":\""+eventDTO.getIssueType()+"\""+
", \"priority\":\""+eventDTO.getPriority()+"\""+
", \"issuesubType\":\""+eventDTO.getIssuesubType()+"\""+
", \"region\":\""+eventDTO.getRegion()+"\""+
", \"airport\":\""+eventDTO.getAirport()+"\""+"}";
mvc.perform(put(BASE + UPDATE.replaceAll("\\{.*\\}", ""))
.contentType(MediaType.APPLICATION_JSON)
.content(json))
.andExpect(status().isInternalServerError());
}
(我已经在设置中创建了对象)
我得到的状态是405,当我输入issueKey时,我得到的状态是200(即使issue key不存在)
它必须抛出状态500我想你的问题是路径变量。 终点是“/update/{issueKey}”,但在测试期间调用“/update/”(?)
Spring知道第一个端点,您调用第二个端点,Spring找不到这个端点,抛出405方法,这是不允许的(您没有PUT/update)。我认为在JUnit测试中,您必须进行
,然后抛出(eywaException)
而不是。然后返回(successResponseDTO)
要使测试通过异常并获得500状态,我之前尝试过放置issue键,但没有获得500,很抱歉在posttry中没有提到这一点,请从put中删除基本变量(..),spring在内部调用它。(基础是你的ip/localhost?)基础+更新是我发送的方向,我已经删除了它,现在我得到了404。你刚刚删除了基础部分吗?因为405通常意味着如果您可以向我们提供您的基本内容和更新内容,则无法找到该方法。另外,您的控制器具有基本url(RequestMapping(“/something/”),请尝试使用字符串进行测试,例如mvc.perform(put(“/update/SOMEID”))或mvc.perform(put(“/something/update/SOMEID”))