gpt4 book ai didi

python - Pact:如何设置提供者状态

转载 作者:太空宇宙 更新时间:2023-11-03 14:27:21 27 4
gpt4 key购买 nike

我正在查看Python implementation协议(protocol)并试图建立提供国。似乎是说,做到这一点的方法是让提供者在服务中内置一个端点,调用该端点将提供者置于正确的状态。问题是我找不到任何有关该端点实际应该是什么样子的文档。输入是什么,返回什么,等等

我尝试查看默认值 ruby implementation ,这似乎意味着一种完全不同的机制,用于将提供者置于某种状态。这看起来像是使用了一个 ruby​​ 模块,该模块由验证器脚本获取 required,根本不涉及 HTTP 请求。

设置提供者状态的正确方法是什么?如果需要设置额外的端点,我需要知道该端点应该是什么样子。如果它需要将类/模块导入到验证程序脚本中,我需要知道它是如何在 ruby​​ 以外的语言中实现的。

最佳答案

根据the documentation in Pact-Python ,具体如何实现这一点有点开放。就我个人而言,我将如何做到这一点,因为我通常不使用 Python,所以节点提供程序在我的提供程序测试中,我将在未使用的端口上创建一个服务器,其目的是从 pact 接收状态并设置它们适本地。一旦运行测试,这个小型服务器就会受到包含消费者、提供者和状态的 JSON 文件的契约的影响。

例如,这是一个节点示例:

var http = require('http');

beforeAll(function(){
// PROVIDER STATE LISTENER
http.createServer(function (req, res) {
var body = [];
// Ignore this bit, this is just how node does server request/response
req.on('data', (chunk) => {
body.push(chunk);
}).on('end', () => {
// Get body, parse JSON. JSON includes 'consumer' string and 'states' array of string
var json = JSON.parse(Buffer.concat(body).toString());


// THIS IS WHERE YOU NEED TO SETUP YOUR STATE
res.status = 200;
switch(json.state) {
case "When User does something": // this is the actual name of the state that's specified by your consumer, which is found in the contract
// Setup any data that relates to your state here, like adding rows to a DB, setting environment variables, etc
break;
// Add another states that are used in your provider tests
default:
res.status = 500;
res.statusMessage = "Missing state '" + json.state + "'";
}
res.end(); // Send the response back
});
}).listen(9001);
})

// Run your tests
it("Test Pact Interactions", function() {
return pact.verifyPacts({
// options here
providerStatesSetupUrl: "http://localhost:9001"
});
});

我希望这是有道理的。

关于python - Pact:如何设置提供者状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47539344/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com