Pact JS:如何发布到协议经纪人

时间:2017-10-09 19:19:42

标签: javascript node.js npm pact

我正在尝试将我的pact文件发布到我设置的pact代理。根据{{​​3}},这是通过导入@pact-foundation/pact-node并调用publishPacts()来完成的。

但是,该功能不存在。我已经使用npm install @pact-foundation/pact-node --save安装了模块,正如文档所说,然后是require d,但是当我尝试发布时,我得到TypeError: pact.publishPacts is not a function。当我从交互式节点shell中require时,我得到了这个:

> const pact = require('@pact-foundation/pact-node')
undefined
> pact
{ default: Pact { __servers: [] } }
>

这里发生了什么?如果我导航到node_modules/pact/node_modules并在那里导入模块表单,我就可以得到publishPacts方法。但是我的实际测试用例找不到与@pact-foundation/pact-node一起安装的pact版本。只有我单独安装的版本,似乎已被破坏。

1 个答案:

答案 0 :(得分:0)

这适用于我v5.1.0

import pact from '@pact-foundation/pact-node';
import * as path from 'path';

const opts = {
  pactUrls: [path.resolve(__dirname, './pacts/matching_service-animal_profile_service.json')],
  pactBroker: 'https://test.pact.dius.com.au',
  pactBrokerUsername: 'blah',
  pactBrokerPassword: 'blah',
  tags: ['prod', 'test'],
  consumerVersion: '1.0.0'
}
pact.publishPacts(opts)
  .then(() => {
    console.log('Pact contract publishing complete!')
  })
  .catch(e => {
    console.log('Pact contract publishing failed: ', e)
  })