这是我试图用JMockit测试的代码:
public void unitUnderTest() {
doSomething();
}
private void doSomething() {
Foo foo = new Foo();
foo.setExtraFooness("its extra fooness");
...
...
}
是否可以验证是否已调用foo.setExtraFooness("its extra fooness");
?
答案 0 :(得分:1)
您始终可以验证对模拟方法的调用:
@Test
public void exampleTest(@Mocked Foo foo) {
new ClassUnderTest().unitUnderTest();
new Verifications() {{ foo.setExtraFooness("whatever"); }};
}
也就是说,当你真的想要验证 state 时,最好避免模拟。如果可以从被测对象中获取foo
对象,则测试应该只编写一个传统的断言来验证其状态。