扩展spock规范会给代码带来错误

时间:2013-02-01 12:17:34

标签: groovy spock geb

Geb Groovy和spock gurus,请你帮我理解为什么以下代码对我不起作用(变量'closr'给出一个空值)

import geb.Browser
import spock.lang.Specification

class somclass extends Specification{
def clos = {
    go()

    }
def Browser driveit(Browser browser, Closure script) {
    script.setDelegate(browser)
    script()
    browser
    }
}

objnew = new somclass()
def closr =  objnew.clos
objnew.driveit(new Browser(),closr)

虽然

import geb.Browser

class somclass {
def clos = {
    go()

    }
def Browser driveit(Browser browser, Closure script) {
    script.setDelegate(browser)
    script()
    browser
    }
}

objnew = new somclass()
def closr =  objnew.clos
objnew.driveit(new Browser(),closr)

这个对我有用(变量'closr'有闭包返回)。第二个唯一的区别是我删除了扩展spock规范

1 个答案:

答案 0 :(得分:1)

我不知道你试图通过这个代码实现什么,但Spock不能以这种方式使用。 Spock规范必须通过JUnit执行,并且必须符合某些规则(例如,测试方法包含setup:expect:等块。