1


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

很感谢任何形式的帮助!

4

1 回答 1

2

请检查Content-Type标题并确保它是application/json. 如果服务认为它正在匹配文本消息,则可能会发生这种情况。

于 2017-03-08T00:29:21.897 回答