我有一个使用 Spring 的依赖注入(inject)的 Java 应用程序。我想模拟一个 bean,并验证它是否接收到某些方法调用。
问题是 Mockito 不会在测试之间重置模拟,所以我无法正确验证它的方法调用。
我的被测单元:
public class MyClass {
@Resource
SomeClientClass client;
public void myMethod() {
client.someMethod();
}
}
单元测试类:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(loader = AnnotationConfigContextLoader.class, classes = UnitTestConfig.class)
public class MyClassTest {
@Resource
SomeClientClass client;
@Test
public void verifySomething() {
// ...
Mockito.verify(client).publish();
}
}
最后,
@Configuration
public class UnitTestConfig {
@Bean
SomeClientClass client() {
return Mockito.mock(SomeClientClass.class);
}
}
虽然我可以通过在测试之间手动重置模拟来解决这个问题,但我想知道是否有更清洁/更惯用的方法。
最佳答案
我不得不在开始时添加这个:
@BeforeEach
void setup() {
Mockito.reset(...mockBeans);
...
}
关于spring - 在测试之间重置作为 Spring bean 提供的 Mockito 模拟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34934257/