首页 > 解决方案 > 如果它是 WebApplicationException 的子类,我如何验证 HTTP 状态代码?

问题描述

我正在尝试测试我的控制器是否确实会使用 409 冲突的响应代码引发错误。我的控制器如下所示:

if (Object != null) {
    return Object;
} else {
    throw new WebApplicationException(Response.Status.CONFLICT);
}

在单元测试中,我有这样的事情:

assertThrows(WebApplicationException.class, () -> controller.createObject();

虽然我觉得这个测试不够全面,因为我还没有验证调用的响应代码。如果可能的话,如何做到这一点?

标签: javaunit-testinghttpjunit

解决方案


您需要将应该抛出异常的代码包含在 try / catch 中,捕获异常,然后从异常对象获取响应并检查其状态代码,而不是断言抛出异常。像这样的东西:

try {
    controller.createObject();
    assertFail("should have thrown an exception");
} catch (WebApplicationClass ex) {
    assertEquals(404, ex.getResponse().getStatusCode());
}

推荐阅读