Rspec比较:eq、match、be之间的差异是否应为?

Rspec比较:eq、match、be之间的差异是否应为?,rspec,Rspec,开始对cucumber使用rspec断言,我怀疑哪种方法可以进行字符串比较。我尝试了以下4种方法,它们似乎都产生了相同的结果,所以我想知道其中一种方法是否比其他方法更好 那么,解释这四种方法之间的区别容易吗?也许举个例子 page.first('div#navigation a').text.should == 'Radio') page.first('div#navigation a').text.should eq('Radio') page.first('div#navigation a'

开始对cucumber使用rspec断言,我怀疑哪种方法可以进行字符串比较。我尝试了以下4种方法,它们似乎都产生了相同的结果,所以我想知道其中一种方法是否比其他方法更好

那么,解释这四种方法之间的区别容易吗?也许举个例子

page.first('div#navigation a').text.should == 'Radio')
page.first('div#navigation a').text.should eq('Radio')
page.first('div#navigation a').text.should match('Radio')
page.first('div#navigation a').text.should (be 'Radio')

非常感谢

对于您正在进行的字符串比较,
=
eq
(be.)
基本相同

match
是模式匹配,并且将匹配部分,因此将匹配缓慢性,如果这是
a
锚定标记中的全部文本,则对于其他方法来说,这是不正确的

e、 g


就我个人而言,我最喜欢字符串比较。其他人更喜欢
.eql
,因为它与
=
的区别更大(越突出,越不混乱)。我可能更喜欢
==
,因为它在不同语言之间的移植性更强。

嗨,迈克尔,谢谢你的解释。在任何情况下,也就是说,在哪些特定情况下,我们应该使用其中一个操作符而不是其他操作符来确保我们收到正确的行为?请参阅以获取更多信息。
1.9.3-p194 :001 > a="text with radio"
 => "text with radio" 
1.9.3-p194 :002 > a.=='radio'
 => false 
1.9.3-p194 :013 > b="radioz"
 => "radioz" 
1.9.3-p194 :014 > b.=="radio"
 => false 
1.9.3-p194 :015 > b.match "radio"
 => #<MatchData "radio"> 
== is ruby (which also has .eql? available though not shown here).
.eq is an rspec helper as is the (be .) construct