Don*_*oby 4

您确实可能会开始为 B 编写测试并在知道需要时立即实现 B,然后返回 A。但是当您返回 A 时,您可能想要对 B 使用模拟,以便对 A 的测试真正是测试 A 及其与 B 的相互作用。

部分原因是 B 可能使用另一个类 C 来完成其某些工作。如果你想用真实的B来测试A,你还需要C,当然难度还可以进一步扩大。

使用模拟,您可以让测试仅检查 A 在应该调用 B 方法时是否调用 B 方法,并正确处理您告诉模拟给出的响应,而不是依赖于 B 的实际实现。