所有关于rspec的教程都使用内置匹配器,但我没有看到学习新语法的成本带来的好处。例如,这两个是等价的:
expect(person.name).to eq "John"
person.name.should == "John"
至少eq
易于记忆。 rpsec
涉及更多“异国情调”的内容,例如have(n).things
。为什么我不应该在普通红宝石中使用object.size.should == n
?
总之,学习所有这些rspec匹配器而不是使用.should ==
有什么好处?
答案 0 :(得分:1)
.should
不香草红宝石 - 它就像expect
一样......
rspec
introduced expect
语法,因为should
方法中的固有警告:
委派问题在
method_missing
,BasicObject
和标准库代理之间,ruby拥有非常丰富的构建工具 委托或代理对象。不幸的是,RSpec的should
语法为 它读起来很优雅,很容易产生奇怪的,令人困惑的失败 在测试委托/代理对象时。
Rspec API指南是让测试读起来像英语,这就是为什么他们的语法如下:
object.should have(5).elements
或使用新语法
expect(object).to have(5).elements
这意味着你"期望对象有5个元素"而不是用
来解释相同的object.size.should == n