我有一个控制器类,其中servletContext是自动装配的。
@Controller
public class BaseController {
@Autowired
private ServletContext servletContext;
protected ServletContext getServletContext() {
return servletContext;
}
public Object getBean(String beanName) {
ApplicationContext appContext = WebApplicationContextUtils.getWebApplicationContext(this.servletContext);
return appContext.getBean(beanName);
}
}
getBean()
中的BaseController
被扩展它的子类中的许多方法使用。
当我尝试为子类中的方法(调用getBean()
)执行jUnit测试用例时,我收到了以下错误。
java.lang.IllegalArgumentException: ServletContext must not be null
运行junit时无法加载web.xml。
有人可以帮忙解释一下如何从JUnit设置servlet上下文吗?如果MockServletContext
是解决方案,请提供有关如何将MockServletContext
注入控制器中自动装配的servletContext的代码段。
注意: setServletContext()
BaseController
答案 0 :(得分:0)
您可以使用PowerMock' s WhiteBox设置servletContext。
WhiteBox.setInternalState(controller, "servletContext", yourServletContext);