开始使用黄瓜的rspec断言,我对使用字符串比较的方法存有疑问。我尝试了以下4种方法,所有这些方法似乎产生了相同的结果,所以我想知道其中一种方法是否比其他方法更好?
并且,解释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')
非常感谢!!
答案 0 :(得分:6)
对于您正在进行的字符串比较,==
,eq
和(be .)
基本相同。
match
是模式匹配并且会匹配部分,所以会匹配bRadiosity,如果这是a
锚标记中的整个文本
e.g。
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
,因为它与=
的区别更多(更突出,更少混淆)。我可能更喜欢==
,因为它在各种语言中更容易移植。