我有一个 ruby pact 模拟服务提供商来捕获我的请求。我想提取请求中提供的确切值(由 Pact.term / Pact.like 匹配),以便在 pact 服务提供商回答请求后对该值进行进一步处理。
一个例子:密码重置功能。代码对邮件服务进行 API 调用,提供密码重置链接作为参数。Pact 捕获请求并成功模拟它,验证数据。我将 reset_link 作为参数之一(一个 Json 主体)传递。这在 Pact.term 中得到匹配。都好。但我也想恢复请求中使用的确切值(比如 reset_link: ' http://sample.com/reset-password?key=12345 '),所以我可以发出后续请求并检查那个确切的链接确实允许成功重置密码。
现在,如果我直接发送电子邮件,这很容易,我只需解析 Mail::TestMailer.deliveries.last
我怎样才能做到这一点?
我已经浏览了代码,即使创建 Pact::SomethingLike 子类也行不通,因为比较方法是一个可爱的函数式编程模块,而不是类中的方法。
是否有前/后钩子,或获取整个网络请求的方法?
PS:我知道这通常由我使用的底层库进行测试。库批准的调整功能的方法是覆盖某些方法,我需要重新测试整个功能。
PPS:这不是铁轨,而是罗达。
谢谢安德烈