深入理解 Spock 框架中的模拟与存根技术
在软件开发的测试过程中,模拟(Mocking)和存根(Stubbing)是两个非常重要的概念。它们可以帮助我们在进行单元测试时,隔离被测试类与其依赖项,从而更专注于被测试类的功能。下面我们将深入探讨 Spock 框架中模拟与存根的相关技术。
1. 存根基础
在之前的代码示例中,我们可以发现仓库库存的真实代码从未运行过。Spock 单元测试可以独立运行,不受真实库存状态的影响。只要仓库类的签名(即方法定义)保持不变,即使在原始类中添加了新方法,这些单元测试也能正确运行。这就是在 Spock 中进行类存根的基本原理。
2. 参数宽松匹配
在存根方法被调用时,有时我们不需要精确匹配参数。例如,当我们要创建一个涉及 10 种不同产品的单元测试时,如果使用精确参数存根,就需要为同一个方法存根 10 次不同的调用。Spock 提供了参数匹配器来解决这个问题,使用下划线 _ 表示“我不关心这里传入的是什么”。以下是一个示例:
def "If warehouse has both products everything is fine"() {
given: "a basket, a TV and a camera"
Product tv = new Product(name:"bravia",price:1200,weight:18)
Product camera = new Product(name:"panasonic",price:350,weight:2)
Basket ba
超级会员免费看
订阅专栏 解锁全文
6071

被折叠的 条评论
为什么被折叠?



