我的场景是消费者定义了两个交互,interation1与state1,interation2与state2。在运行interation1之后,json响应中将有一个id,这个id必须用作interation2的查询参数。在提供者端,是否有方法从interation1的响应中提取该id?顺便说一句,我正在使用契约提供者junit。
mnemlml81#
你在用错误的方式思考事情。提供者状态旨在防止这种形式的耦合。交互作用1应该完全独立于交互作用2。根据文件:依赖于先前测试结果的测试是脆弱的,会让您回到集成测试的地狱,这是您试图通过使用pacts来逃离的肮脏地方。您必须控制提供者测试上下文,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。
1条答案
按热度按时间mnemlml81#
你在用错误的方式思考事情。
提供者状态旨在防止这种形式的耦合。交互作用1应该完全独立于交互作用2。
根据文件:
依赖于先前测试结果的测试是脆弱的,会让您回到集成测试的地狱,这是您试图通过使用pacts来逃离的肮脏地方。
您必须控制提供者测试上下文,pact测试才能工作。
在您的情况下,对于状态2,您可能有以下描述:
在测试特定的交互之前,pact将为您提供设置该状态的机会,但是应该针对您的用例进行设置-例如,您的代码可以使用该id在数据库(或内存中的)中创建资源。
这样,可以在完全不知道交互1存在的情况下执行交互2。