我正在开发一个Rails应用程序,我只是和我的同事谈论我们在测试中混合使用了夹具和模拟,我们正在使用黄瓜和Rspec.问题是:何时应该使用每一个?
解决方法
当使用真实对象是不切实际/不必要时,我会使用模拟对象.让我们假设您需要通过邮政编码调用一些远程API,例如地址查找器.您可能希望模拟该对象,以便每次运行测试时都不会对其进行调用.还有其他原因,例如提高速度,要求数据在需要确切响应的位置发生变化,或者可能尚未存在.它允许您单独测试事物,因为您可以确定当您在此模拟对象上调用这些方法时,您将得到这个并且您实际上不需要运行代码,因为此测试并不重要.
如果您使用灯具,您将拥有一个真实的对象,并且将调用方法等并运行它们的代码,除非您将这些方法存根,这是另一个问题.
希望有所帮助.有一个很好的窥视代码(http://peepcode.com/products/rspec-mocks-and-models)嘲笑和剔除,也许检查出来.