【发布时间】:2016-06-08 18:42:45
【问题描述】:
当我监视一个班级时,它是否也会监视该班级的所有成员?例如,假设我正在创建一个 Pair 类,并测试 toString 的实现(不是有史以来最好的例子)。
public class Pair<L,R> {
L left;
R right;
// ... getters setters etc
public String toString() {
return "(" + getLeft() + ", " + getRight() + ")";
}
}
假设我要确保左右它们的 toString 都被调用。
@Test
public void testToString() {
classUnderTest = spy(new Pair<>(...));
String str = classUnderTest.toString();
verify(classUnderTest.getLeft()).toString(); // does it actually verify?
verify(classUnderTest.getRight()).toString();
}
【问题讨论】:
-
测试时会发生什么?在你做之前阅读:github.com/mockito/mockito/wiki/FAQ#can-i-verify-tostring
-
@Compass 不,它是正确的。
-
@JBNizet - 他们确实通过了。在阅读了更多内容之后,这看起来意味着它的行为符合预期——如果你没有向它传递一个模拟/间谍,我不知道验证失败。这里的 toString 只是一个例子,我的真实代码是不同的。
-
不,他们没有通过。如果他们这样做,那么您没有正确测试它。发布一个完整的最小示例来复制它。