本博客上有关 Jenkins 的最新文章已为我们做好了以下准备:在测试中验证您的 Jenkins 管道的行为,以便能够检查您对此管道所做的任何更改会产生什么影响,在它影响到您的实时实例并可能影响使用它的团队之前。
这篇文章是我系列文章的一部分,我在其中详细阐述了大规模运行 Jenkins 的最佳实践,这可能会使敏捷团队和 CI/CD 工作受益。
到目前为止,我们已经了解了如何在 IDE 中设置项目、如何从共享库运行管道以及如何为该管道编写第一个(简单)测试。
这篇文章详细说明了如何扩展此测试以验证步骤并在出现故障时检查管道的行为。
回顾
还记得我们简单的管道和测试吗?如果你不了解的话,这里有 华人海外数据 两个摘录来展示我们将重点关注的相关部分:
n>
检查步骤中的呼叫
管道中的第一步是调用名为的模块,该模块实际上会调用 maven 对签出的代码执行某些操作。 我们要检查此调用是否发生,并验证该调用是否执行。module_MavenCopy
clean verifyCopy
还记得我们已经为此创建了一个 Mock 对象吗?
这将非常方便,因为 Spock 框架使我们能够计算 Mock 上的调用次数,甚至允许我们检查调用中的值!
Spock 将此称为“基于交互的测试”,并且具有非常特殊的语法。
?
then:
1 * mavenMock.call('clean verify')
<span class="copy">Copy</span>
此代码将转换为自然语言:“检查我们的 maven mock 上是否带有参数‘clean verify’的调用。它应该只发生一次!”
让我们仔细看看这个区块。它包含两个交互,每个交互都有四个不同的部分:基数、目标约束、方法约束和参数约束:then:Copy
?
1 * mavenMock.call('clean verify')
| | | |
| | | argument constraint
| | method constraint
| target constraint
cardinality
<span class="copy">Copy</span>
此单行代码检查对 maven 的一次 (1) 调用,其中参数等于“clean verify”。
如果没有发生此单一调用,Spock 将会发出警告,并且测试将失败。