我是新来的蜜蜂,卡在一个关于Zuul的问题上。首先,我正在为Zuul过滤器编写测试用例,我想知道我是否需要为我的Zuul过滤器编写UT,如果是的话,那么我将编写zuul过滤器的shouldFilter()方法的单元测试,其中我必须模拟requestContext。
我怎样才能达到这个目标呢?
我已经模拟了HttpServletRequest和RequestContext,但是当我进入调试模式时,它显示为空。我错过了什么?
@Override
public boolean shouldFilter() {
RequestContext requestContext = RequestContext.getCurrentContext();
HttpServletRequest request = requestContext.getRequest();
if (request.getHeader(Constants.AUTHORIZATION.getValue()) != null) {
return true;
}
return false;
}那是我最初的方法
@Test
public void testShouldFilter(){
MockHttpServletRequest request = new MockHttpServletRequest(context);
request.addHeader("Authorization","123");
RequestContext rc = new RequestContext();
rc.setRequest(request);
Mockito.when(requestContext.getCurrentContext().getRequest()).thenReturn(request);
doReturn(request).when(requestContext).getRequest();
doReturn(rc).when(requestContext)
Mockito.when(request.getHeader()).thenReturn(rc);
Mockito.when(RequestContextHolder.(Constants.AUTHORIZATION.getValue())).thenReturn(request.getHeader("Authorization"));
boolean Sf = authorizationFilter.shouldFilter();
Assert.assertFalse(Sf);
}那是我的单元测试
为糟糕的英语道歉
我希望请求应该有任何模拟对象,这样它就可以比较头值,但返回null。
发布于 2019-04-02 12:59:52
RequestContext.testSetCurrentContext(new RequestContext());或
MockHttpServletRequest request = new MockHttpServletRequest("GET", "/url");
RequestContext context = new RequestContext();
context.setRequest(request);
RequestContext.testSetCurrentContext(context);过滤器的单元测试不是什么超级好的东西,但为什么不呢,这取决于你。
https://stackoverflow.com/questions/55401104
复制相似问题