Насмешливый класс Дженкинса для юнит-тестирования - PullRequest
1 голос
/ 23 мая 2019

Я написал класс для отмены сборки определенного задания на основе номера сборки.

Теперь я не понимаю, как высмеивать связанные с Дженкинсом вещи для моих юнит-тестов

Это класс

/ ** * Отмена сборок конкретной работы * /

import jenkins.model.*

def call(Map options = [:]) {
if(!options.job)
    error "Parameter job (jenkins job path) is missing"
if(!options.numbers)
    error "Parameter numbers (build numbers) is missing"
def numbers = options.numbers instanceof List ? (options.numbers?.flatten() as Set):options.numbers

for(def number:numbers) {     
    echo "Cancelling the job $options.job with build number $number"
    abortBuild(options.job, number)
}

}

def abortBuild(String job, Integer number) {
def build = Jenkins.instance.getItemByFullName(job)
        .getBuildByNumber(number)
if(null != build && build.isBuilding() || build.isInQueue()) {
    build.finish(hudson.model.Result.ABORTED, new java.io.IOException("Aborting build"))
}
}

return this

Тестовый класс, который я пробовал, упаковывал этот класс

   class WrapCancelBuilds extends BasePipelineTest {
   List<String> messagePublished = []
   String errorMessage


  def run( def jobName, def numbers ) {
  super.setUp()

  def script = loadScript('vars/cancelBuilds.groovy')
  helper.registerAllowedMethod(method('echo', String.class), { message ->
     messagePublished.add(message)
  })
  helper.registerAllowedMethod(method('error', String.class), { message ->
     errorMessage = message
  })
  helper.registerAllowedMethod(method('abortBuild', String.class, int), {
    true
  })     
  script([job:jobName,numbers:numbers])

  }

Я получаю следующее сообщение об ошибке java.lang.NullPointerException: невозможно вызвать метод getItemByFullName () для нулевого объекта

Как решить

...