Проверка того, что в общей библиотеке jenkins вызывается функция плагина - PullRequest
0 голосов
/ 10 января 2020

Я пытаюсь написать модульный тест для функции util в общей библиотеке Jenkins. Функция util вызывает плагин Office365Connector в Jenkins.

Моя функция util выглядит следующим образом:

#!/usr/bin/env groovy

import pe.ui.BuildNotificationSettings
import pe.ui.BuildStates

def call(BuildNotificationSettings options, BuildStates status) {

    options.teamsChannelWebhookUrlList.each {
        office365ConnectorSend (
            status: status.toString(),
            webhookUrl: "$it",
            color: BuildStates.valueOf(status.toString()).color,
            message: "Build ${status.toString()}: ${JOB_NAME} - ${BUILD_DISPLAY_NAME}<br>Pipeline duration: ${currentBuild.durationString}"
        )
    }

}

Вариант использования, который я пытаюсь проверить, заключается в том, что office365ConnectorSend вызывается функция.

Я пробовал следующий подход:

import com.homeaway.devtools.jenkins.testing.JenkinsPipelineSpecification
import pe.ui.BuildNotificationSettings
import pe.ui.BuildStates

public class _sendTeamsMessageSpec extends JenkinsPipelineSpecification {

    def _sendTeamsMessage = null

    def setup() {
        _sendTeamsMessage = loadPipelineScriptForTest("vars/_sendTeamsMessage.groovy")
        def office365ConnectorSend = Mock(office365ConnectorSend)
    }

    def "returns without sending no build notification settings are passed" () {
        given:
            def options = new BuildNotificationSettings(
                shouldSendNotification: null,
                teamsChannelWebhookUrlList: null
            )
        when:
            def result = _sendTeamsMessage(options, null)
        then:
            0 * explicitlyMockPipelineVariable("office365ConnectorSend")(_)
    }
}

выполнение этого на Дженкинсе дает мне java.lang.IllegalStateException: There is no pipeline variable mock for [office365ConnectorSend]., что я делаю неправильно в этом подходе?

1 Ответ

0 голосов
/ 14 января 2020

После следующего этого потока я в итоге вызвал функцию explicitlyMockPipelineStep для функции плагина office365ConnectorSend. Это сделало функцию видимой в тестах, и я смог возобновить тестирование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...