首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何模拟RequestContext.getCurrentContext()?

如何模拟RequestContext.getCurrentContext()?
EN

Stack Overflow用户
提问于 2019-03-28 15:15:11
回答 1查看 2.9K关注 0票数 4

我是新来的蜜蜂,卡在一个关于Zuul的问题上。首先,我正在为Zuul过滤器编写测试用例,我想知道我是否需要为我的Zuul过滤器编写UT,如果是的话,那么我将编写zuul过滤器的shouldFilter()方法的单元测试,其中我必须模拟requestContext

我怎样才能达到这个目标呢?

我已经模拟了HttpServletRequestRequestContext,但是当我进入调试模式时,它显示为。我错过了什么?

代码语言:javascript
复制
@Override
public boolean shouldFilter() {

    RequestContext requestContext = RequestContext.getCurrentContext();
    HttpServletRequest request = requestContext.getRequest();
    if (request.getHeader(Constants.AUTHORIZATION.getValue()) != null) {
        return true;
    }
    return false;
}

那是我最初的方法

代码语言:javascript
复制
@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。

EN

回答 1

Stack Overflow用户

发布于 2019-04-02 12:59:52

代码语言:javascript
复制
RequestContext.testSetCurrentContext(new RequestContext());

代码语言:javascript
复制
MockHttpServletRequest request = new MockHttpServletRequest("GET", "/url");
RequestContext context = new RequestContext();
context.setRequest(request);
RequestContext.testSetCurrentContext(context);

过滤器的单元测试不是什么超级好的东西,但为什么不呢,这取决于你。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55401104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档