确定karma-pact模拟服务器何时启动

时间:2017-05-02 12:48:10

标签: javascript mocha karma-runner pact

我们正在使用karma-pact插件来运行我们的pact JS客户端测试,基于https://github.com/pact-foundation/pact-js/blob/master/karma/mocha/client-spec.js的示例。

在示例中,before()中存在超时,我相信在运行测试之前确保模拟服务已经启动(请参阅注释"较慢的Travis CI构建需要#34;)。

我不愿意在我们的测试中设置一个固定的超时,因为它在不同的环境中太短或太长(例如CI与本地)因此我正在寻找一种方法来检查是否服务器已经启动。

我尝试使用pact API https://github.com/pact-foundation/pact-node#check-if-a-mock-server-is-running,但是这似乎启动了一个新的模拟服务器,该服务器与karma-pact插件启动的服务器冲突(一个错误:报告时报告ESRCH错误)尝试运行pact.createServer()。从测试中运行。)

有没有办法确定模拟服务器是否已启动,例如等待URL可用?可能有一种方法可以获得karma-pact插件启动的模拟服务器的引用,以便使用pact-node API?

1 个答案:

答案 0 :(得分:0)

实际上,最简单的方法是等待端口正在使用中。

默认情况下,

Karma Pact将启动端口1234上的模拟(您可以指定自己的模拟)。端口启动后,服务正在运行,您可以继续。

例如,您可以使用类似wait-for-host的内容来检测正在运行的模拟服务:

var waitForPort = require('wait-for-port');

waitForPort('localhost', 1234, function(err) {
  if (err) throw new Error(err);
  // ... Mock Service is up - now we can run the tests
});