我想测试一下spring mvc控制器,而且这个控制器有一个拦截器,有一个bean,比如UserService,我想模拟这个bean,我该怎么办?
配置如下:
<mvc:interceptor>
<mvc:mapping path="/account/p-bind-verify.do" />
<bean class="com.web.interceptor.HttpBasicAuthInterceptor">
<property name="userService" ref="userService" />
</bean>
</mvc:interceptor>
在我看来,UserService是单例,我创建了一个模拟UserService对象,并在上下文中将对象设置为UserService,但它不起作用。
答案 0 :(得分:0)
您可以使用各种解决方案来模拟userService
。
一种解决方案是使用不同的Spring Profile运行测试,您可以在其中为userService
指定模拟bean。
另一个解决方案是使用Springockito将bean的模拟插入Spring上下文。
答案 1 :(得分:-1)
@Before
public void setUp(){
org.springframework.test.util.ReflectionTestUtils.setField(HttpBasicAuthInterceptor,"userService",new MockUserService());
}