Я написал класс для отмены сборки определенного задания на основе номера сборки.
Теперь я не понимаю, как высмеивать связанные с Дженкинсом вещи для моих юнит-тестов
Это класс
/ **
* Отмена сборок конкретной работы
* /
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 () для нулевого объекта
Как решить