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