Ruby 与香草红宝石相比,rspec matchers有什么好处?
所有关于rspec的教程都使用内置的匹配器,但考虑到学习新语法的成本,我看不出有什么好处。例如,这两者是等效的: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不是普通
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)
?