19、深入理解 Spock 框架中的模拟与存根技术

深入理解 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值