如何使用JenkinsPipelineUnit模拟自定义步骤?

如何使用JenkinsPipelineUnit模拟自定义步骤?,jenkins,jenkins-pipeline,jenkins-pipeline-unit,Jenkins,Jenkins Pipeline,Jenkins Pipeline Unit,我用它来测试管道。我定义了一个自定义步骤,如下所示: //vars/getOnlineNodes.groovy 导入jenkins.model.jenkins def call(){ Jenkins.get()节点 .findAll{it.toComputer().isOnline()} .collect{it.selfLabel.name} } 在我的测试中模拟它: helper.registerAllowedMethod('getOnlineNodes',[],{['node1','nod

我用它来测试管道。我定义了一个自定义步骤,如下所示:

//vars/getOnlineNodes.groovy
导入jenkins.model.jenkins
def call(){
Jenkins.get()节点
.findAll{it.toComputer().isOnline()}
.collect{it.selfLabel.name}
}
在我的测试中模拟它:

helper.registerAllowedMethod('getOnlineNodes',[],{['node1','node2','node3']})

但是它抛出了一个异常
java.lang.NoClassDefFoundError:javax/servlet/ServletException
。我应该如何正确地做到这一点?

我已经找到了解决办法。基本上,如果在运行脚本之前模拟自定义步骤(函数),它将覆盖模拟,因为在调用
runScript('my-script.jenkins')
时将加载库:

helper.registerAllowedMethod('getOnlineNodes',[],{['node1','node2','node3']})
runScript('my-script.jenkins')
您应该做的是加载脚本,然后模拟步骤,然后运行脚本,如下所示:

def script=loadScript('my-script.jenkins')
registerAllowedMethod('getOnlineNodes',[],{['node1','node2','node3']})
script.run()