什么是 RSpec 模拟?

What is RSpec Mocks?

我在 Rails 才开始学习 Ruby。当我研究 RSpec 测试时,我看到了 link 关于 RSpec Mocks 的推荐。但是我不知道 RSpec Mocks 的优点以及如何使用它。那么谁能总结一下呢。

rspec-mocks is a test-double framework for rspec[RSpec is a 'Domain Specific Language' testing tool written in Ruby to test Ruby code] with support for method stubs, fakes, and message expectations on generated test-doubles and real objects alike.

rspec-mocks 通过让您设置已知 return 来帮助控制代码示例中的上下文 值、方法的伪实现,甚至设置特定消息的期望 被对象接收。

RSpec Mocks Installation References

RSpec Mocks Reference #1

RSpec Mocks Reference #2

Reference #3

Mocks 帮助您保持测试干净。我建议从集成测试开始(例如黄瓜)。在那里你不使用模拟(除非可能像 WebMock 这样的东西,从外部世界封装你的应用程序)。一旦你意识到代码变得复杂,你就会开始 rspec 单元测试,你将要编写代码以使你的集成测试绿色化。现在你从其他模型中封装你的模型,从带有模拟的模型中封装你的控制器。所以你要写的代码,使 rspec 测试绿色,不依赖于其他东西。使用模拟,您只需指定所有相关内容的行为,它就会按照您定义的方式运行。当然,您仍然需要测试其他东西是否真的能满足这些期望。但是,当稍后执行某些变更请求会破坏一个模型时——实际上只有该模型的测试会破坏。并且所有相关的东西仍然有效,因为模拟的行为与定义的一样。通过这种方式,您可以更轻松、更快地找到真正的问题。 当然,另一个优点是,您可以减少数据库轮询。

我通过 Rspec 书学习了 Rspec 和黄瓜。它帮助我了解了模拟方法的优点。