5

cucumberで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')

どうもありがとう!!

4

1 に答える 1

6

実行している文字列比較の場合、、、==およびeq(be .)基本的に同じです。

これmatchはパターンマッチングであり、パーシャルと一致するため、bRadiosityと一致します。これは、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 に答える