小编典典

我什么时候应该 mock?

all

我对 mock 和 fake 对象有基本的了解,但我不确定我对何时/何地使用 mock 有感觉 - 。


阅读 57

收藏
2022-08-17

共1个答案

小编典典

单元测试应通过单一方法测试单一代码路径。当一个方法的执行从该方法之外传递到另一个对象,然后再返回时,您就有了依赖关系。

当您使用实际依赖项测试该代码路径时,您不是单元测试;你是集成测试。虽然这很好且必要,但它不是单元测试。

如果您的依赖有问题,您的测试可能会受到影响,从而返回误报。例如,您可能会向依赖项传递一个意外的 null,并且依赖项可能不会像记录的那样抛出
null。您的测试没有遇到应有的空参数异常,并且测试通过了。

此外,您可能会发现很难(如果不是不可能的话)可靠地让依赖对象在测试期间准确地返回您想要的内容。这还包括在测试中抛出预期的异常。

一个模拟取代了这种依赖。您设置对依赖对象调用的期望,设置它应该为您执行所需测试的确切返回值,和/或抛出哪些异常,以便您可以测试异常处理代码。通过这种方式,您可以轻松地测试有问题的单元。

TL;DR:模拟单元测试涉及的每个依赖项。

2022-08-17