我遇到了Pact-js和POST机构的奇怪问题。
背景:
消费者方
- 我有一个NodeJs应用程序,我试图测试
- 我配置了Pact并设置了适当的框架
- 所有测试成功运行并生成合同
提供方:
- 再次,我有一个NodeJs应用程序,我试图测试
- 已经建立了契约并且框架到位了
- 当我运行测试时,所有GET请求都成功运行,但所有POST都报告失败。
问题:
- 当我回应从Pact(veryifyProvider)传递给服务的POST主体时,我可以看到它将主体(JSON)包裹在另一个' Key:value'配对,我要解析的主体是Key,值是空的。它还为Body中的所有双引号添加了转义字符(\)。
EX:
{" {\"帐户\":\" 123 \" \"轨道\":\" 5.00 \& #34; \"日期\":\" 2016年6月22日\" \"客户\":\" 1234 \" \"弹簧\":\" 1234 \"}":""}
当我查看我的Pact合约json时,一切看起来都是正确的。在JEN中读取VerifyProvider并将其传递给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。
非常感谢任何帮助!
答案 0 :(得分:1)
请检查Content-Type
标题并确保其为application/json
。如果服务认为它是匹配的短信,就会发生这种情况。