2017-02-15 8 views
0

私はスポークを始めたばかりで、ドキュメントを読んだが、まだthenセクションの使い方を完全に理解していません。 2つの文字列を比較したい場合は、thenブロックに何が入りますか?spockテストで `then`ブロックを使用する方法

setup: 
def String1 = "books" 
def String2 = new File('/path/to/file').text 

when: 
String1 = String1.toLowerCase() 
String2 = String2.toLowerCase() 

then: 
if (String1 == String2) { 
    print "file contains the word" + String1 
} 

両方の文字列が等しいときには失敗するテストが必要ですが、現在は合格しています。

+0

setup: def string1 = "books".toLowerCase() def string2 = new File('/path/to/file').text.toLowerCase() when: boolean notEquals = string1 != string2 then: notEquals 

または短い:だからあなたのテストは次のようになります。あなたは 'string1 == string2'でなければなりません –

+0

いいえ、' String1!= String2'でなければなりません。しかし、大文字で始まる変数名は使用しないでください。慣例では、そのようなクラス名しか書いていないからです。テストは、 'expect:'(linefeed) '!new file( '/ path/to/file')とすることもできます:text.toLowerCase()。contains(" books ")'。これは一部の人にとっては読みにくいかもしれませんが(私にとっても簡単ですが)、同じことをしていて、テキストファイルに**単語が含まれていることを表現しています。私は、テストが必要以上に冗長であってはならないと思います。 – kriegaex

答えて

2

は、おそらくあなたはこれを行うとします

setup: 
def string1 = "books" 
def string2 = new File('/path/to/file').text 

when: 
string1 = string1.toLowerCase() 
string2 = string2.toLowerCase() 

then: 
string1 != string2 

をしかし、あなたは、この2つのオブジェクトが対等でないことを、確認したいと思います。したがって、whenブロックでは、equalsメソッドをチェックする必要があります。あなたがテストするための表現を持っていない

setup: 
def string1 = "books".toLowerCase() 
def string2 = new File('/path/to/file').text.toLowerCase() 

expect: 
string1 != string2 
関連する問題