如何在 spock 测试中使用 `then` 块

How to use `then` block in spock test

我是 spock 的新手,已经阅读了文档,但仍然不完全理解如何使用 then 部分。如果我想比较两个字符串,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
}

我需要测试在两个字符串相等时失败,但目前它通过了。

可能您想这样做:

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