-2

我第一次使用 Pact.js 进行微服务测试。我尝试遵循以下示例:

  1. https://github.com/lucasmajerowicz/pact-node-example

  2. https://github.com/pact-foundation/pact-js/tree/master/examples/e2e

  3. https://github.com/pact-foundation/pact-js/tree/master/examples/mocha

在示例 3 中;我导航到测试文件夹并运行mocha index.spec.js 但它会引发以下错误:

[2017-02-27T21:37:52.426Z]  INFO: pact-node@4.8.0/38629 on Meliss-MacBook-Pro.local: Creating Pact with PID: 38630
    1) "before all" hook
    2) "after all" hook


  0 passing (2s)
  2 failing

  1) The Dog API "before all" hook:
     Error: timeout of 2000ms exceeded. Ensure the done() callback is being called in this test.


  2) The Dog API "after all" hook:
     Error: connect ECONNREFUSED 127.0.0.1:8989
      at Object.exports._errnoException (util.js:1022:11)
      at exports._exceptionWithHostPort (util.js:1045:20)
      at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1087:14)

它按预期创建logandpact文件夹,但它既不在pact.jsonpact 文件夹中创建文件,也不在 log 文件夹中记录文件。

更让我感到困惑的是,我在示例 1 和示例 2 中得到了完全相同的错误。这告诉我我有一个问题,但我不知道它是什么。有人可以帮我调试问题吗?

4

1 回答 1

1

您可以尝试以下方法吗?

  1. 增加测试超时时间(目前为 2s)
  2. logLevel: 'DEBUG'在任何pact({...})声明中设置
  3. 重新运行测试

并为我们提供输出的要点。

似乎 Ruby 模拟服务器没有启动或花费超过 2 秒,并且节点进程正在超时等待它出现。

如果这不起作用,请尝试手动启动模拟服务./node_modules/bin/pact-mock-service --port 1234,当它出现时,运行命令netstat -an | grep LISTEN | grep 1234,以便我们可以看到它绑定到哪个网络。

于 2017-02-28T21:08:26.910 回答