【发布时间】:2021-06-26 16:22:52
【问题描述】:
我有一个过滤器,我在它的 init 方法中使用了 servlet 上下文中的一些属性:
@Override
public void init(FilterConfig filterConfig) {
prop = WebApplicationContextUtils.getRequiredWebApplicationContext(filterConfig.getServletContext()).getEnvironment().getProperty("my.property");
}
我正在为此过滤器编写单元测试,但我不知道如何模拟 WebApplicationContext 以使用 WebApplicationContextUtils 并设置此属性。到目前为止,这是我尝试过的:
class FilterTest {
@MockBean
private FilterChain chain;
@MockBean
private WebApplicationContext webAppContextMock;
@MockBean
private HttpServletRequest httpServletRequest;
@MockBean
private HttpServletResponse httpServletResponse;
@Autowired
private MyFilter myFilter;
@Test
void doFilter() throws IOException, ServletException {
MockServletContext mockServletContext = new MockServletContext();
mockServletContext.setAttribute("my.property", "Property");
Mockito.when(WebApplicationContextUtils.getWebApplicationContext(Mockito.any(ServletContext.class))).thenReturn(webAppContextMock);
}
由于 webApplicationContext,我有一个 npe,我应该将此 servlet 上下文映射到 webApplicationContext。我在这里缺少什么?提前致谢!
【问题讨论】:
标签: java spring-boot junit mockito servlet-filters