我们正在使用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?
答案 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
});