2

Jenkins Pipeline のカスタム ステップで使用されるジェネレーター クラスがいくつかあります。これらのステップ (グルーヴィーなスクリプト) を、内部で使用されるクラスのモックと共にテストしたいと思います。スクリプトをテストすることは問題ではありませんが、内部で使用されるクラスをモックすることには問題があります。

Mockito を使用してスクリプト メンバーをモックしようとしましたが、どの方法を試してもうまくいきませんでした。スクリプトメソッド内の関数またはプロパティをモックするソリューションを見つけましたが、クラスオブジェクトは見つかりませんでした。

これは(簡略化された)スクリプトです。XML ジェネレーターとして機能する Class を使用します。

// XmlGenerator is custom class that makes some magic
// script is named myCustomStep.groovy
def call(def val) {
    def myXmlGenerator = new XmlGenerator()
    xmlGenerator.setValue(val)
    def xmlString = xmlGenerator.generate()
    writeFile file: "/some/file/path.xml", text: xmlString
}

「writeFile」または「sh」をモックすることに問題はありませんが、次のような XmlGenerator.generate() メソッドをモックしたいと思います

@Test
void someTest() {
    def myCustomStep = loadscript("vars/myCustomStep.groovy")
    def generatorMockedMethod = mock(Function)
    myCustomStep.metaclass.myXmlGenerator.generate = generatorMockedMethod.&apply // Just my imagination of how I would like it to be
    helper.registerAllowedMethod("writeFile", [Map.class], { params ->
        println "File was saved: file: ${params.file}, text: ${params.text}"
    })

    myCustomStep val: "50"
    assert generatorMockedMethod.called(1)
4

1 に答える 1