我有一个使用Spring依赖注入的Java应用程序。我想模拟一个bean,并验证它是否接收到某些方法调用。
问题是Mockito不会在测试之间重置模拟,因此我无法正确验证其上的方法调用。
我的测试单元:
public class MyClass {
@Resource
SomeClientClass client;
public void myMethod() {
client.someMethod();
}
}
Run Code Online (Sandbox Code Playgroud)
单元测试课:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(loader = AnnotationConfigContextLoader.class, classes = UnitTestConfig.class)
public class MyClassTest {
@Resource
SomeClientClass client;
@Test
public void verifySomething() {
// ...
Mockito.verify(client).publish();
}
}
Run Code Online (Sandbox Code Playgroud)
最后,
@Configuration
public class UnitTestConfig {
@Bean
SomeClientClass client() {
return Mockito.mock(SomeClientClass.class);
}
}
Run Code Online (Sandbox Code Playgroud)
尽管我可以通过在测试之间手动重置模拟来解决这个问题,但是我想知道是否存在更干净/更惯用的方法。
小智 5
我必须在开始时添加这个:
@BeforeEach
void setup() {
Mockito.reset(...mockBeans);
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
880 次 |
| 最近记录: |