我有一个非常简单的RESTful控制器,它生成一个json,我想测试它是否正常工作。 我可以在用户id存在时轻松测试该方法,没问题。 我想验证当给定的id不存在时抛出IllegalArgumentException。有没有办法做到这一点?
在应用程序中,当发生断言错误时,响应将重定向到显示通用消息的通用错误页面。 如果我使用响应(withStatus(HttpStatus.NOT_FOUND)我没有验证异常,也没有验证我的消息。 有人可以帮帮我吗?
这是我要测试的方法:
@Transactional (readOnly = true)
@RequestMapping(method=RequestMethod.GET, value="/json/user/{id}", headers="Accept=application/json, text/html")
public @ResponseBody UserData getUserJson(@PathVariable Long id)
{
User user = this.userService.findUserById(id);
Assert.notNull(user , "User does not exist with the given id: " + id);
return new UserData (user);
}
这是一个有效身份证明的测试:
@Test
public void testRestUserJson() {
mockServer.expect(requestTo(JSON_URL + USER)).andExpect(method(HttpMethod.GET))
.andRespond(withSuccess(JSON_RESPONSE, MediaType.APPLICATION_JSON));
UserData userData = restClientTemplate.getForObject(JSON_URL + USER, UserData.class);
AssertResponseContent(userData , expectedData);
mockServer.verify();
EasyMock.verify(user);
}
此致 丹妮拉
答案 0 :(得分:0)
为什么不抓住异常并创建日志并将异常写入日志。
答案 1 :(得分:0)
更新您的测试,如下所示。
@Test(expected = IllegalArgumentException.class)
public void testRestUserJson() { ... }
请注意附加参数expected
,它指定在测试执行时必须抛出的异常。
此外,还要声明异常消息,错误代码等,以创建自定义异常匹配器。请参阅我的答案以获取详细信息和伪代码。