如何验证WebApplicationException子类的HTTP状态码?附409冲突测试场景
验证WebApplicationException的409 Conflict响应码
当然可以实现更全面的测试啦!你当前的测试只验证了抛出的异常类型,确实没覆盖状态码的校验,咱们可以通过两种常见方式来完善:
方式一:捕获异常后直接校验状态码
assertThrows方法其实会返回被捕获的异常实例,我们可以拿到这个实例后,对它的响应状态码做断言:
// 捕获抛出的WebApplicationException WebApplicationException thrownException = assertThrows(WebApplicationException.class, () -> controller.createObject()); // 校验响应状态码是否为409 Conflict assertEquals(Response.Status.CONFLICT.getStatusCode(), thrownException.getResponse().getStatus());
这种方式简单直接,不用额外引入依赖,适合大多数基础测试场景。
方式二:用AssertJ写出更流畅的断言
如果你的项目里已经引入了AssertJ断言库,还可以写出可读性更强的链式断言代码:
assertThatThrownBy(() -> controller.createObject()) .isInstanceOf(WebApplicationException.class) .satisfies(exception -> { WebApplicationException webEx = (WebApplicationException) exception; assertThat(webEx.getResponse().getStatus()).isEqualTo(Response.Status.CONFLICT.getStatusCode()); });
小提示:尽量用Response.Status.CONFLICT.getStatusCode()来获取状态码,而不是直接写硬编码的409,这样代码的可维护性更好,后续如果枚举有变更也能自动同步~
内容的提问来源于stack exchange,提问作者asfsfsdfdsfdsf
相关产品推荐
相关产品推荐

