gpt4 book ai didi

node.js - Pact-js : POST body is garbled by VerifyProvider

转载 作者:太空宇宙 更新时间:2023-11-04 00:26:19 27 4
gpt4 key购买 nike


我在 Pact-js 和 POST 主体方面遇到了一个奇怪的问题。

背景:
消费端
- 我有一个 NodeJs 应用程序,我正在尝试测试
- 我配置了 Pact 并设置了适当的框架
- 全部测试成功并生成合约

提供商方:
- 同样,我有一个 NodeJs 应用程序,我正在尝试测试
- 协议(protocol)已经建立,框架已经到位
- 当我运行测试时,所有 GET 请求都成功运行,但所有 POST 都报告失败。

问题:
- 当我回显从 Pact (veryifyProvider) 传递到服务的 POST 主体时,我可以看到它将主体 (JSON) 包装在另一个“键:值”配对中,其中我要解析的主体是键和该值为空。它还为 Body 内的所有双引号添加了转义字符 (\)。例如:
{"{\"账户\":\"123\",\"轨道\":\"5.00\",\"日期\":\"2016-06-22\",\"客户\":\"1234\",\" Spring \":\"1234\"}":""}

当我查看 Pact 合约 json 时,一切看起来都是正确的。在VerifyProvider读取JSON并将其传递到REST端点之间的某个地方,主体被破坏了。这只是在测试期间发生的接缝,正常调用可以正常工作。

这是我使用提供者端执行验证的代码:

const verifier = require('pact').Verifier;
const path = require('path');

let contract = path.join(__dirname, 'pactContract.json');

let opts = {
providerBaseUrl: "http://localhost:3001",
pactUrls: [contract],
};

verifier.verifyProvider(opts)
.then((res) => {
console.log('pact veryify complete, !!!');
console.log(res);
process.exit(0);
}).catch((error) => {
console.log(error);
process.exit(1);
});

我无法获取确切的消费者代码库,但其结构几乎与此处所示的 Pact-js 相同。 .

非常感谢任何帮助!

最佳答案

请检查Content-Type header 并确保其为application/json。如果服务认为它匹配短信,就会发生这种情况。

关于node.js - Pact-js : POST body is garbled by VerifyProvider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42639338/

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