rspec匹配器与香草红宝石有什么好处?

时间:2014-05-12 15:36:04

标签: ruby rspec

所有关于rspec的教程都使用内置匹配器,但我没有看到学习新语法的成本带来的好处。例如,这两个是等价的:

expect(person.name).to eq "John" 
person.name.should == "John"

至少eq易于记忆。 rpsec涉及更多“异国情调”的内容,例如have(n).things。为什么我不应该在普通红宝石中使用object.size.should == n

总之,学习所有这些rspec匹配器而不是使用.should ==有什么好处?

1 个答案:

答案 0 :(得分:1)

.should 香草红宝石 - 它就像expect一样......

rspec introduced expect语法,因为should方法中的固有警告:

  

委派问题method_missingBasicObject和标准库代理之间,ruby拥有非常丰富的构建工具   委托或代理对象。不幸的是,RSpec的should语法为   它读起来很优雅,很容易产生奇怪的,令人困惑的失败   在测试委托/代理对象时。

Rspec API指南是让测试读起来像英语,这就是为什么他们的语法如下:

 object.should have(5).elements

或使用新语法

expect(object).to have(5).elements

这意味着你"期望对象有5个元素"而不是用

来解释相同的
object.size.should == n