Mockito:验证布尔方法(或其他类型)
Mockito: Verify a boolean method (or other types)
我知道你只能验证void方法。但我其实问自己为什么。
我最近偶然发现了一个单元测试,我确实需要在其中验证某个调用是否已发出。准确的说是"newFolder.mkdirs()"。
在我看来,此方法的行为几乎 "voidy"。但是作为 "feature" 开发者为这个函数提供了一个布尔值 return 类型来查看操作是否成功。
很好,但在我的测试中我不太在意我的模拟。我只是想确保完成这个调用,就像我想确保完成重要的 void 调用一样。
那么现在有可能做到这一点吗?我完全坚持这一点,甚至无法想象解决这个小问题的方法:/有人有一个好的、简短的想法吗?
我完全错了:你可以验证一切。我放错了括号。
我有:
verify(newFolder.mkdirs());
我需要:
verify(newFolder).mkdirs();
傻我;)
我可能理解错了,哪里说只能验证void方法了?
例如...
import org.junit.Test;
import static org.mockito.Mockito.*;
public class VoidTest {
private interface TestClass {
boolean doStuff(String arg);
}
@Test
public void doIt() {
TestClass tc = mock(TestClass.class);
tc.doStuff("[SOMETHING]");
verify(tc).doStuff("[SOMETHING]"); // OK
verify(tc).doStuff("[SOMETHING ELSE ]"); // BOOM!
}
}
我知道你只能验证void方法。但我其实问自己为什么。
我最近偶然发现了一个单元测试,我确实需要在其中验证某个调用是否已发出。准确的说是"newFolder.mkdirs()"。 在我看来,此方法的行为几乎 "voidy"。但是作为 "feature" 开发者为这个函数提供了一个布尔值 return 类型来查看操作是否成功。
很好,但在我的测试中我不太在意我的模拟。我只是想确保完成这个调用,就像我想确保完成重要的 void 调用一样。
那么现在有可能做到这一点吗?我完全坚持这一点,甚至无法想象解决这个小问题的方法:/有人有一个好的、简短的想法吗?
我完全错了:你可以验证一切。我放错了括号。
我有:
verify(newFolder.mkdirs());
我需要:
verify(newFolder).mkdirs();
傻我;)
我可能理解错了,哪里说只能验证void方法了?
例如...
import org.junit.Test;
import static org.mockito.Mockito.*;
public class VoidTest {
private interface TestClass {
boolean doStuff(String arg);
}
@Test
public void doIt() {
TestClass tc = mock(TestClass.class);
tc.doStuff("[SOMETHING]");
verify(tc).doStuff("[SOMETHING]"); // OK
verify(tc).doStuff("[SOMETHING ELSE ]"); // BOOM!
}
}