[英]How to Mock a HttpServletRequest that is not the input of filter method
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>()));
}
}
}
如何為過濾方法編寫測試。 我能夠模擬ContainerReqeustContext。 但是如何模擬HttpServletRequest,因為它不是filter()
方法的輸入。
您可以使用@InjectMocks
批注:
@RunWith(MockitoJUnitRunner.class)
class Test {
@InjectMocks
private Permission permission;
@Mock
private HttpServletRequest servletRequest;
@Test
public void test()
{
permission.filter(...);
}
}
或者,您可以使用簡單的二傳手。
Class Permission implements ContainerRequestContext
{
@context
HttpServletRequest servletRequest;
public void filter(ContainerRequestContext containerRequestContext) throws IOException
{
...
}
void setHttpServletRequest(HttpServletRequest servletRequest) {
this.servletRequest = servletRequest;
{
}
@RunWith(MockitoJUnitRunner.class)
class Test {
private Permission permission = new Permission();
@Mock
private HttpServletRequest servletRequest;
@Test
public void test()
{
permission.setHttpServletRequest(servletRequest);
permission.filter(...);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.