首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jenkins-spock在单元测试中评估Jenkins共享库的返回值

使用jenkins-spock在单元测试中评估Jenkins共享库的返回值
EN

Stack Overflow用户
提问于 2021-12-02 17:14:11
回答 1查看 267关注 0票数 0

因此,我在vars文件夹中有一个脚本化的共享管道库,在最后返回一些值:

代码语言:javascript
复制
def call() {
  def a = 3
  //does stuff
  return a
}

现在我试着像这样测试它:

代码语言:javascript
复制
def "example test"() {
  when:
  def result = scriptUnderTest.call()
  then:
  result == 3
}

这是行不通的,因为结果总是为空。我已经为不同的场景编写了一些与Jenkins有关的测试,所以基本的机制是明确的。但我在这个案子里漏掉了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-21 20:48:42

捕获可能在//does stuff部分。

下面是一个返回值的步骤的工作测试:

sayHello.groovy中,我们定义了一个步骤,该步骤从shell获取stdout并连接到它:

代码语言:javascript
复制
def call() {
    def msg = sh (
        returnStdout: true,
        script: "echo Hello"
    )
    msg += " World"
    return msg
}

sayHelloSpec.groovy内部,我们编写单元测试并检查返回值:

代码语言:javascript
复制
import com.homeaway.devtools.jenkins.testing.JenkinsPipelineSpecification

public class sayHelloSpec extends JenkinsPipelineSpecification {

    def "sayHello returns expected value" () {
        def sayHello = null

        setup:
            sayHello = loadPipelineScriptForTest("vars/sayHello.groovy")
            // Stub the sh step to return Hello
            getPipelineMock("sh")(_) >> {
                return "Hello"
            }

        when:
            def msg = sayHello()

        then:
            msg == "Hello World"
    }

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70203792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档