2017-02-15 4 views
0

Я новичок в том, чтобы спокать и просмотрел документацию, но до сих пор не совсем понимаю, как использовать раздел then. Если я хочу сравнить две строки, что будет в блоке then?Как использовать блок `then` в тесте spock

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

Вы не выражение для проверки. Тогда вы должны быть, 'string1 == string2' –

+0

Нет, это должно быть' String1! = String2', потому что тест должен завершиться неудачно, когда они равны. Но, пожалуйста, не используйте имена переменных, начиная с символов верхнего регистра, потому что по соглашению вы будете писать только имена классов. BTW, тест также может быть просто: 'ожидать:' (linefeed) '! New File ('/ path/to/file'). Text.toLowerCase() содержит (" 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 

Но вы хотите проверить, что эти два объекта не равны. Поэтому в блоке when вы должны проверить метод equals. Так что ваш тест должен выглядеть следующим образом:

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

when: 
boolean notEquals = string1 != string2 

then: 
notEquals 

или короче:

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

expect: 
string1 != string2 
Смежные вопросы