Pact-js:验证提供者

时间:2017-03-07 02:55:44

标签: node.js pact


    我遇到了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

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

请检查Content-Type标题并确保其为application/json。如果服务认为它是匹配的短信,就会发生这种情况。