Pact-js:POST 正文被 VerifyProvider 乱码
Pact-js: POST body is garbled by VerifyProvider
我 运行 遇到了一个关于 Pact-js 和 POST 主体的奇怪问题。
背景:
消费端
- 我有一个正在尝试测试的 NodeJs 应用程序
- 我配置了 Pact 并设置了适当的框架
- 所有测试 运行 成功并生成合约
提供方:
- 同样,我有一个我正在尝试测试的 NodeJs 应用程序
- 契约已经建立,框架已经到位
- 当我 运行 测试时,所有 GET 请求 运行 成功,但是所有 POST 都报告失败。
问题:
- 当我回显从 Pact (veryifyProvider) 传递给服务的 POST 正文时,我可以看到它把正文 (JSON) 包裹在另一个 'Key: value' 配对中,其中正文我要解析的是Key,值为空。它还向 Body 内的所有双引号添加了转义字符 (\)。
例如:
{"{\"Account\":\"123\",\"Orbit\":\"5.00\",\"Date\":\"2016-06-22\",\"Client\":\"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
。如果服务认为它匹配短信,就会发生这种情况。
我 运行 遇到了一个关于 Pact-js 和 POST 主体的奇怪问题。
背景:
消费端
- 我有一个正在尝试测试的 NodeJs 应用程序
- 我配置了 Pact 并设置了适当的框架
- 所有测试 运行 成功并生成合约
提供方:
- 同样,我有一个我正在尝试测试的 NodeJs 应用程序
- 契约已经建立,框架已经到位
- 当我 运行 测试时,所有 GET 请求 运行 成功,但是所有 POST 都报告失败。
问题:
- 当我回显从 Pact (veryifyProvider) 传递给服务的 POST 正文时,我可以看到它把正文 (JSON) 包裹在另一个 'Key: value' 配对中,其中正文我要解析的是Key,值为空。它还向 Body 内的所有双引号添加了转义字符 (\)。
例如:
{"{\"Account\":\"123\",\"Orbit\":\"5.00\",\"Date\":\"2016-06-22\",\"Client\":\"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
。如果服务认为它匹配短信,就会发生这种情况。