5

开始对黄瓜使用 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')

非常感谢!!

4

1 回答 1

6

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

is 模式匹配并将匹配部分,因此将match匹配 bRadioity 如果这是a锚标记中的整个文本,则对于其他方法将不正确

例如

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

就我个人而言,我==最喜欢字符串比较。其他人更喜欢.eql它,因为它与=(更突出,更少混乱)不同。我可能==更喜欢它,因为它似乎更易于跨语言移植。

于 2012-12-15T15:20:31.700 回答