我在使用 Pact-js 和 POST 正文时遇到了一个奇怪的问题。
背景:
消费者端
- 我有一个我正在尝试测试的 NodeJs 应用程序
- 我配置了 Pact 并设置了适当的框架
- 所有测试都成功运行并生成合同
提供者端:
- 同样,我有一个 NodeJs 应用程序,我'我正在尝试测试
- Pact 已经设置并且框架到位
- 当我运行测试时,所有 GET 请求都成功运行,但是所有 POST 都报告失败。
问题:
- 当我回显从 Pact(veryifyProvider)传递给服务的 POST 主体时,我可以看到它将主体(JSON)包装在另一个“键:值”配对中,我想要解析的主体是键和值为空。它还在正文中的所有双引号中添加了转义字符 (\)。例如:
{"{\"账户\":\"123\",\"Orbit\":\"5.00\",\"日期\":\"2016-06-22\",\"客户\" :\"1234\",\"弹簧\":\"1234\"}":""}
当我查看我的 Pact 合同 json 时,一切看起来都是正确的。在 VerifyProvider 读取 JSON 并将其传递到 REST 端点之间的某个地方,主体被损坏了。这只是在测试期间发生的接缝,正常调用可以正常工作。
这是我使用 Provider 端执行验证的代码:
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。
很感谢任何形式的帮助!