Ruby 与香草红宝石相比,rspec matchers有什么好处?

Ruby 与香草红宝石相比,rspec matchers有什么好处?,ruby,rspec,Ruby,Rspec,所有关于rspec的教程都使用内置的匹配器,但考虑到学习新语法的成本,我看不出有什么好处。例如,这两者是等效的: expect(person.name).to eq "John" person.name.should == "John" 至少情商是容易记住的rpsec涉及更多的“奇异”事物,比如have(n)。things。为什么我不应该在普通ruby中使用object.size.should==n 总之,使用学习所有这些rspec匹配器的好处是什么?should==?。should不是普通

所有关于rspec的教程都使用内置的匹配器,但考虑到学习新语法的成本,我看不出有什么好处。例如,这两者是等效的:

expect(person.name).to eq "John" 
person.name.should == "John"
至少情商是容易记住的
rpsec
涉及更多的“奇异”事物,比如
have(n)。things
。为什么我不应该在普通ruby中使用
object.size.should==n

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

。should
不是普通的ruby-它是rspec,就像
expect

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

委托问题
method\u missing
BasicObject
和标准库的委托之间,ruby具有非常丰富的构建工具 委托或代理对象。不幸的是,RSpec的
语法应该是
从字面上看,它很容易产生奇怪的、令人困惑的失败
测试委托/代理对象时

Rspec API指南要求测试读起来像英语,这就是为什么它们的语法像:

 object.should have(5).elements
或者使用新语法

expect(object).to have(5).elements
这意味着您“期望对象有5个元素”,而不必对此进行解释

object.size.should == n

这个问题似乎有点宽泛,基于观点,但快速回答是rspec可以为应用程序创建一个更自然的规范,我想DHH自己也说过,但这是他的观点,那篇文章展示了几个不同的观点,你可以用它们来熟悉赞成/反对的论点。那么,好处就是拥有更多类似英语的语法?而
.should==
可以完成像
eq
这样的内置匹配器所拥有的一切。就像代码中的任何东西一样,剥猫皮的方法不止一种,但只限于
。should=
听起来很傻-你
怎么期待{save\u new}。改变(保存的项目,:大小)。按(1)