时常挂载嘴边,我们都在用'rspec'写测试,我们都很喜欢她。我想问你真的了解她么? 官方文档 - 常常是你的出发点,也是你的终点 https://github.com/rspec/rspec
Rspec 实际上是由三部分组成 rspec-core rspec-expectations rspec-mocks
对于 rspec-mocks,其实主要要分清两个概念 Method Stubs: 作用是预设一个返回值,常常是用来模拟一些方法,以方便于测试需要测试的功能 Message Expectations: 作用是表达一个期望,常常是用来测试功能代码是不是满足预期
对于测试对象,大致可以根据和 real object 的相关程度分为三类 Test Doubles: 完全的 mock 对象 book = double("book") Instance Doubles: 这是一个类似 real object 的 mock 对象,会限制你 stub 不存在的方法,以及错误的参数 book = instance_double("Book", :pages => 250) Partial Doubles: 这就是一个 real object,只不过我们在其上添加一些 mock 方法 allow(Person).to receive(:find) { person }
上述简介仅仅起到抛砖引玉的作用,详情参见官方文档,如果能把源代码读懂就更牛逼了!