我在使用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/

10-11 13:49