【发布时间】:2011-05-09 09:39:57
【问题描述】:
目前,我使用@Autowired、@Component、@Resource 等连接了我的 spring 应用程序。现在我想编写一个测试,该测试需要模拟系统中的特定对象,但保留剩余对象的实际生产连接。
假设被测试的根对象称为Foo。在依赖链的更深处,Foo 依赖于 Bar。目前为了模拟这个对象,我创建了一个 test-applicationContext.xml,它只有一个 bean 条目:
<bean id="bar" class="org.mockito.Mockito" factory-method="mock">
<constructor-arg value="com.package.Bar" />
</bean>
test-applicationContext.xml 在 @ContextConfiguration 注解中声明,因此 Foo 最终将依赖于模拟的 Bar 对象。
是否有可能得到相同的结果而不必拥有这个 test-applicationContext.xml?即以编程方式执行相同的操作?
所以在伪代码中,我想知道我是否可以有类似的东西:
public class MyTest {
@Test
public void simple() {
// create mock Bar object
// register mock Bar object in container
// resolve Foo object with all its dependencies but use the mock Bar object instead of the real one
// set some expectations on the Bar object
// call some method on Foo
}
}
【问题讨论】:
标签: java spring mocking mockito