gpt4 book ai didi

netflix-zuul - 如何模拟 RequestContext.getCurrentContext()?

转载 作者:行者123 更新时间:2023-12-04 13:01:39 26 4
gpt4 key购买 nike

我是新来的蜜蜂,遇到了关于 Zuul 的一个问题。我首先为 Zuul 过滤器编写测试用例我想知道我是否需要为我的 Zuul 过滤器编写 UT 如果是,那么我正在编写 shouldFilter() 的单元测试我必须模拟的 zuul 过滤器的方法 requestContext .
我怎样才能实现这个目标?
我已经 mock 过 HttpServletRequestRequestContext但是当我进入 Debug模式时,它显示为 ..我错过了什么?

@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);
}
那是我的单元测试
抱歉英语不好
我希望请求应该有任何模拟对象,以便它可以比较 header 值但返回空值。

最佳答案

RequestContext.testSetCurrentContext(new RequestContext());

或者
MockHttpServletRequest request = new MockHttpServletRequest("GET", "/url");
RequestContext context = new RequestContext();
context.setRequest(request);
RequestContext.testSetCurrentContext(context);

过滤器的单元测试不是很好,但为什么不呢,这取决于你

关于netflix-zuul - 如何模拟 RequestContext.getCurrentContext()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55401104/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com