如何在没有类的情况下将纯Groovy脚本导入Spock测试

时间:2017-01-20 16:10:56

标签: unit-testing gradle groovy spock

我有以下Groovy脚本:

TheScript.groovy

package groovy

def sayHi = "hi"

它的测试规范。 注意: 这只是一个理论而不是我认真的方法。只是想告诉你我想要实现的目标。

TheScriptSpec

import spock.lang.Specification
import spock.lang.Unroll
import groovy.TheScript // what to do instead?

class TheScriptTest extends Specification {
    def "Test One"() {
        expect:
        sayHi() == "hi" // sayHi() does not exist - how to call the field?
    }
}

抛出的错误告诉我肯定没有为 TheScriptTest.sayHi()定义任何内容 - 这很好。我理解错误

2 个答案:

答案 0 :(得分:0)

看起来您的问题是您在脚本中定义了一个变量" def sayHi"然后在你的测试中你称它为一种方法。

def sayHi(){ return "hi" }

注意:我相信'返回'在groovy中没有必要。

答案 1 :(得分:0)

您需要创建脚本sayHi.groovy

package groovy

//
def call() {
 return "hi"
}

在Groovy中,我们可以为脚本添加一个名为call的方法,然后在不使用name调用的情况下调用该方法。我们只需在对象实例上键入括号和可选参数即可。 Groovy称之为调用操作符:()

import spock.lang.Specification
import spock.lang.Unroll
import groovy.TheScript

class TheScriptTest extends Specification {
    def "Test One"() {
        expect:
        sayHi() == "hi"
    }
}