模拟与存根:信用卡收费测试示例
1. 模拟方法调用与闭包的使用
在测试中,有时需要模拟方法的调用情况,以验证程序的行为是否符合预期。例如,有如下代码:
basket.addProduct camera
basket.checkout(customer)
then: "credit card is charged"
1 * creditCardSevice.sale({amount -> amount == basket.findOrderPrice()}, { client -> client.vip == false})
这里使用了两个闭包,分别对应 sale() 方法的两个参数。第二个闭包检查对象的单个字段(客户类的 vip 字段),第一个闭包调用外部方法 findOrderPrice() 进行计算。
整行代码的含义是:“当这个单元测试完成时,我期望 sale 方法恰好被调用一次。它应该有两个参数。第一个参数应该等于 basket.findOrderPrice() 的结果。第二个参数应该是一个包含 vip 字段的对象实例,且 vip 字段的值应该为 false ”。如果这些条件不满足,Spock 测试将失败,只有所有条件都正确,测试才能通过。
2. 信用卡收费的两步流程
在实际的电商应
超级会员免费看
订阅专栏 解锁全文
29

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



