假设我有HttpServlet
属性(MyAttribute
)。在servlet初始化之后,我想用mock替换后者。
我在覆盖的MyServlet.init()
方法中实例化我的属性,如下所示:
WebApplicationContext wac = getWebApplicationContext();
this.myAttribute = (MyAttribute) wac.getBean("myAttribute");
现在,在我的单元测试中,我得到的只是一个WebApplicationContext
对象。 1
我计划像这样嘲笑这个属性:
MyServlet myServlet = (MyServlet) WebApplicationContext.getServletContext().getServlet("myServlet");
myServlet.setMyAttribute(EasyMock.createStrictMock(MyAttribute.class));
不幸的是,ServletContext().getServlet()
方法已弃用,目前始终返回null
,并将在以后的版本中永久删除。因此我的问题是:
如何通过WebApplicationContext模拟HttpServlet的属性?
1:这是因为我的单元测试在自己的线程中启动一个Tomcat'ish Server实例,在我的应用程序启动并运行后返回给我的WebApplicationContext。