如何在Spring Mvc的拦截器中模拟bean

时间:2014-05-08 02:22:01

标签: spring-mvc mocking interceptor

我想测试一下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,但它不起作用。

2 个答案:

答案 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());
}