[英]How to mock RequestContext.getCurrentContext()?
I am new bee here stuck in one problem regarding Zuul.我是新来的蜜蜂,遇到了关于 Zuul 的一个问题。 I am writing test cases for Zuul filters first I want to know do I need to write UT's for my Zuul filters if yes then I am writing unit test of
shouldFilter()
method of my zuul filter in which I have to mock requestContext
.我首先为 Zuul 过滤器编写测试用例我想知道我是否需要为我的 Zuul 过滤器编写 UT,如果是,那么我正在编写我的 zuul 过滤器的
shouldFilter()
方法的单元测试,其中我必须模拟requestContext
。
How can I achieve this goal ?我怎样才能实现这个目标?
I have already mocked HttpServletRequest
and RequestContext
but when I go in debug mode it shows as null .. what am I missing ?我已经嘲笑了
HttpServletRequest
和RequestContext
但是当我进入调试模式时,它显示为null .. 我错过了什么?
@Override
public boolean shouldFilter() {
RequestContext requestContext = RequestContext.getCurrentContext();
HttpServletRequest request = requestContext.getRequest();
if (request.getHeader(Constants.AUTHORIZATION.getValue()) != null) {
return true;
}
return false;
}
That is my original method那是我原来的方法
@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);
}
That is my Unit test那是我的单元测试
and Sorry for bad English抱歉英语不好
I expect request should have any mock object so that it can compare header value but its returning null.我希望请求应该有任何模拟对象,以便它可以比较标头值但返回空值。
RequestContext.testSetCurrentContext(new RequestContext());
or或者
MockHttpServletRequest request = new MockHttpServletRequest("GET", "/url");
RequestContext context = new RequestContext();
context.setRequest(request);
RequestContext.testSetCurrentContext(context);
Unit tests for filters are not something super good, but why not, it is up to you过滤器的单元测试不是很好,但为什么不呢,这取决于你
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.