您好我正在尝试为产品购买工作流程编写合同测试。所以很明显我不能在不调用 Add to Cart API 的情况下直接调用 Checkout API。但正如我观察到的验证命中,单独的路径可能与 Pact JSON 文件中列出的顺序不同。
那么我应该如何处理这种涉及会话管理和工作流的场景(意味着 step1 应该成功,然后 step2 才会成功)
谢谢!
用于provider states
在购物车中设置正确的数据,以便在调用时checkout
获得所需的行为。这是来自 pact.io 的关于提供者状态的文档。
协议中的每个交互都应单独验证,不保留先前交互的上下文。依赖于先前测试结果的测试很脆弱,会让你回到集成测试地狱,这是你试图通过使用协议来逃避的讨厌的地方。
那么如何测试一个要求数据已经存在于提供者上的请求呢?提供者状态允许您通过在交互运行之前将数据直接注入数据源来在提供者上设置数据,以便它可以做出符合消费者期望的响应。提供者状态的名称在消费者交互的给定子句中指定,然后用于查找要在提供者中运行的代码块以设置正确的数据。如果您需要存根下游系统,或者返回在正常情况下难以引起的错误响应(例如 500),那么您可以在此处设置存根。
https://docs.pact.io/documentation/provider_states.html
在您的情况下,这看起来像:
an item has been added to the cart
收到后给出,a request to checkout
它将以the checkout response...
.
顺便说一句,我也想你会想要,no items have been added to the cart
在收到a request to checkout
它时会回复some other type of response (empty cart? error?)
提供者需要an item has been added to the cart
在验证码中实现提供者状态钩子,它将通过将商品直接插入数据源来将商品添加到购物车中。