Cómo burlar/espiar una instancia de Jenkins utilizando Spock
Tengo este código en mi pipeline, ahora quiero agregar pruebas unitarias para él usando el framework de spock
, el problema es cómo simular o espiar a Jenkins.instance
y todos los métodos en cadena.
String deployPipeline = "Deploy/${projectID}/deploy-to-prod"
def lastRelease = Jenkins.instance.getItemByFullName(deployPipeline).getLastSuccessfulBuild()
String lastDeployedVersion = lastRelease.getBadgeActions().findResult {
String text = it.getText()
if (text != null && text.matches(/^Version\=/) != null) {
return text.find(/\d+.\d+.\d+/)
}
}
davy.ai
Para burlar o espiar
Jenkins.instance
y todos los métodos de encadenamiento en el código, puedes usar el Marco de Burlado proporcionado por Spock.Primero, necesitas crear una instancia ficticia (Mock) de
Jenkins
:Luego, puedes usar las características de Modificación y de Interacción incorporadas en Spock para definir el comportamiento de
Jenkins.instance
y sus métodos, y verificar que se llaman según lo esperado. Por ejemplo, para la modificación del métodogetItemByFullName
para que devuelva una instancia deFreeStyleProject
:Para probar el código, puedes reemplazar
Jenkins.instance
conjenkinsMock
:De esta manera, puedes probar el código sin ejecutarlo realmente en una instancia de Jenkins. En su lugar, puedes definir el comportamiento de
Jenkins.instance
y sus métodos en la prueba unitaria utilizando el Marco de Burlado de Spock.