这篇文章包括评论将测试中的Fakes、Mocks以及Subs将的比较明晰,遂此处转载以便日后查阅并推广给需要的同学。侵删。
测试中 Fakes、Mocks 以及 Stubs 概念明晰 - 王下邀月熊的文章 - 知乎
https://zhuanlan.zhihu.com/p/26942686
总结:
Mocks 与 【(Fakes,Stubs)以下称后者】区别
Mocks可以使得测试失败,更注重工作的测试,如发邮件,入库等。这可以人为制造一些异常,来验证程序对特定异常的处理方式是否如预期。如,在模拟发邮件时,抛出服务器超时异常,来看程序是否有重试机制或者程序是否崩溃。Fakes和Stubs不可以使得测试失败,更注重于测试的返回结果。fake是从对象(或者接口)的角度,去除多余的内容,只关注核心逻辑。例如不关注对象的数据库存储过程,将其存储到内存中,简化步骤,验证其接口实现是否正确即可。而stub关注输入输出,伪造一个输入,看输出是否符合预期,所以比较适合于Query