0

我有一个 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:这不是铁轨,而是罗达。

谢谢安德烈

4

1 回答 1

1

我不确定 Pact Ruby 是否支持这个确切的要求,但是深入研究你为什么这样做,我认为这是一个坏主意。

这是一个功能测试,Pact 有意识地让它难以支持。有关原因的更多详细信息,请参阅https://docs.pact.io/best_practices/contract_tests_not_functional_tests.html。对于这类测试,有更好的工具来完成这项工作,它们不属于消费者代码库(它们绝对属于提供者的测试套件)。

Pact 是一个合约测试工具,因此只对孤立的请求/响应合约感兴趣,而不是根据功能测试链接的合约。

于 2017-05-04T09:37:36.183 回答