Class Permission implements ContainerRequestContext
{
@context
HttpServletRequest servletRequest;
public void filter(ContainerRequestContext containerRequestContext) throws IOException
{
String Path=servletRequest.getPathInfo;
int id=containerRequestContext.getId;
if(id==null){
containerRequestContext.abortWith(new ServerResponse(ExceptionUtil.getErrorMessageObject(...),errorCode,new Header<Object>()));
}
}
}
出于测试目的,
当我们设置 id=null 时,如何获取 ServerResponse
对象中设置的 errorCode
。
@RunWith(MockitoJUnitRunner.class)
class Test {
@InjectMocks
private Permission permission;
@Mock
private HttpServletRequest servletRequest;
@Mock
private ContainerRequestContext containerRequestContext;
@Test
public void test()
{
when(servletRequest.getPathInfo()).thenReturn("/getid");
when(containerRequestContext.getId()).thenReturn(null);
permission.filter(containerRequestContext);
Response r = //Need the code. How to get the Response that i have set on permission class when id=null so that i can fetch the errorCode from that.
//With that erroCode i can write my test methods.
}
}
最佳答案
您需要的是一个ArgumentCaptor
:
ArgumentCaptor<Response> argumentCaptor = ArgumentCaptor.forClass(Response.class);
verify(containerRequestContext).abortWith( argumentCaptor.capture() );
这会检查方法 abortWith
是否已被调用一次(曾经是 verify
的默认值),并将调用该方法的参数存储在 ArgumentCaptor
,您可以通过以下方式获取它:
Response response = argumentCaptor.getValue();
有关更多详细信息,请参阅 JavaDoc .
当然,还有其他方法(例如,您可以使用Answer
),但它们并不那么容易。
关于java - 如何从 requestContext.abortwith() 方法获取响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47087419/