我在使用Pact-js和POST正文时遇到了一个奇怪的问题。
的背景:
消费者方
-我有一个要测试的NodeJs应用
-我配置了Pact并设置了适当的框架
-所有测试成功运行并生成合同
提供方:
-同样,我有一个要尝试测试的NodeJs应用
-已建立协议并已建立框架
-运行测试时,所有GET请求均成功运行,但是所有POST均报告失败。
问题:
-当我回显从Pact(veryifyProvider)传递到服务的POST正文时,我可以看到它将正文(JSON)包裹在另一个“键:值”配对中,我要解析的正文是键,该值为空。它还在主体内的所有双引号中添加了转义字符(\)。
例如:
{“ {\” 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
标头,并确保它是application/json
。如果服务认为它与文本消息匹配,则会发生这种情况。
关于node.js - Pact-js:POST主体被VerifyProvider弄乱了,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42639338/