我有一个使用Spring依赖注入的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);
}
}
虽然我可以通过在测试之间手动重置模拟来解决这个问题,但我想知道是否有更清洁/更惯用的方法。
答案 0 :(得分:1)
我必须在开始时添加它:
@BeforeEach
void setup() {
Mockito.reset(...mockBeans);
...
}