0

我的场景是消费者定义了两个交互,interation1 与 state1,interation2 与 state2。运行interation1后,JSON响应中会有一个id,这个id必须作为interation2的查询参数。在提供者方面,有没有办法从 interation1 的响应中提取该 id?顺便说一句,我正在使用协议提供者 junit。

4

1 回答 1

0

你正在以错误的方式思考事情。

提供者状态旨在防止这种形式的耦合。交互 1 应该完全独立于交互 2。

文档中:

依赖于先前测试结果的测试很脆弱,会让你回到集成测试地狱,这是你试图通过使用协议来逃避的讨厌的地方。

您必须控制提供程序测试上下文才能使 Pact 测试正常工作。

在您的情况下,对于状态 2,您可能有以下描述:

a user with ID 1 exists

在测试该特定交互之前,Pact 将为提供设置该状态的机会,但是应该为您的用例完成 - 例如,您的代码可以使用该 ID 在数据库(或内存中的)中创建资源.

@State("a user with ID 1 exists") // Must match the state description in the pact file
public void setupUser1() {
  // Do what you need to for that user to exist 
}

这样,可以在完全不知道交互 1 存在的情况下执行交互 2。

于 2021-01-08T23:48:59.937 回答