如何在Spring上下文中注入模拟
这个问题在这里已经有了答案:
是的,你在正确的轨道上,在@Configuration
类中放置一个模拟@Bean
是一种方法,我将描述我的经验:
诀窍是,您需要纯粹使用一组不同的.xml文件进行测试,这些文件不包括这些bean的实时版本。
@ContextConfiguration(locations = {"context1-test.xml", "context2-test.xml", ...})
并且“-test-xml”文件进入src/test/resources
。
至少那是我在做同样事情的经历。 也许有一些方法可以用模拟版本来“覆盖”bean,但是至今我还没有意识到它。
我也选择把嘲笑(我有5个)一起放在一个自己的配置中:
@Configuration
public class MockServicesProvider {
@Bean
public AnotherBean myMock() { return mock(AnotherBean.class); }
}
这个问题的另一个有趣的部分是initMocks(this);
的常见用法initMocks(this);
在你的测试类的@Before
方法中。
如果这些嘲讽正在其他地方使用(并且它们,那就是为什么你initMocks(this)
它们连接起来......),那么initMocks(this)
会在测试之间将它们吹走(而不是字面意思 - 只是新的嘲讽将被创建,在其他物体上连线的嘲笑将会“丢失”)。
解决方案是在每次测试之前在@Before
方法中调用mockito的reset(mockObject)
。 同样的模拟被重置(所有的when
和交互),而不会创建新的模拟。
请注意, reset
的Mockito文档非常严厉地说,除了在通过依赖注入应用模拟的情况下,通常不应该使用这种方法,因为我们确实在这种情况下进行了这项工作:)
玩的开心!
这确实是一个重复的
将Mockito模拟注入到Spring bean中
Springockito注释正是我所需要的
https://bitbucket.org/kubek2k/springockito/wiki/springockito-annotations
链接地址: http://www.djcxy.com/p/14393.html