如何使用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()