【发布时间】:2014-12-22 21:38:42
【问题描述】:
在我的 jersey-2 应用程序中,我使用了一个非常简单的ContainerRequestFilter,它将检查基本身份验证(可能是重新发明轮子,但请耐心等待)。过滤器有点像这样
@Override
public void filter(ContainerRequestContext context) throws IOException {
String authHeader = context.getHeaderString(HttpHeaders.AUTHORIZATION);
if (StringUtils.isBlank(authHeader)) {
log.info("Auth header is missing.");
context.abortWith(Response.status(Response.Status.UNAUTHORIZED)
.type(MediaType.APPLICATION_JSON)
.entity(ErrorResponse.authenticationRequired())
.build());
}
}
现在我想为它写一个测试,模拟 ContainerRequestContext 对象。
@Test
public void emptyHeader() throws Exception {
when(context.getHeaderString(HttpHeaders.AUTHORIZATION)).thenReturn(null);
filter.filter(context);
Response r = Response.status(Response.Status.UNAUTHORIZED)
.type(MediaType.APPLICATION_JSON)
.entity(ErrorResponse.authenticationRequired())
.build();
verify(context).abortWith(eq(r));
}
此测试在 eq(r) 调用上失败,即使查看 Response 对象的字符串表示形式它们是相同的。知道有什么问题吗?
【问题讨论】:
标签: java unit-testing jersey-2.0