我的void
方法改变了类中的boolean
变量值。DI怎么检查呢?
:
- 模拟类对象
- 使用适当的参数调用方法
- 检查了实例变量
但是这不会改变实例变量的值。我该怎么做呢?
ReferenceLettersBean rf = Mockito.mock(ReferenceLettersBean.class);
rf.setBoolcheck(false);
Mockito.doNothing().when(rf).checkForDuplicates(anyString(), anyString(), anyString());
rf.checkForDuplicates("abcd@emal.com","abd@gmail.com","abcd@gmail.com");
assertEquals(true,rf.getBoolcheck());
- 不要模拟你要测试的类
- DO模拟与您要测试的类交互的类。
如果你想测试a类中的字段从false变为true,你真正想做的是(我没有你实际的构造函数,我只是猜测):
SomeDependency dependency = mock(SomeDependency.class);
// Make a REAL ReferenceLettersBean
ReferenceLettersBean bean = new ReferenceLettersBean(dependency);
// now make your test
rf.checkForDuplicates("abcd@emal.com","abd@gmail.com","abcd@gmail.com");
assertEquals(true,rf.getBoolcheck());
这个布尔值似乎是一个内部状态。这不是你可以直接用单元测试测试的东西,除非你把它公开,或者通过影响另一个方法的行为可以检测到。