我使用express和node.js为couchbase数据库构建了一个API。我的问题是,当我运行测试时,有些测试失败了,因为服务器没有完全运行。我在https://mrvautin.com/ensure-express-app-started-before-tests找到了一个解决这个问题的方法。文章指出,为了解决这个问题,必须在服务器文件中添加一个事件发射器,如下所示
app.listen(app_port, app_host, function () {
console.log('App has started');
app.emit("appStarted");
});
然后在测试文件中添加这个
before(function (done) {
app.on("appStarted", function(){
done();
});
});
我已经尝试过了,下面是我的实现
服务器文件
app.listen(config['server']['port'], function(){
app.emit("appStarted");
logger.info("Listening")
})
测试文件
before(function(done){
app.on("appStarted", function(){
done();
})
});
我不断收到以下错误
1) "before all" hook in "{root}":
Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.
at listOnTimeout (internal/timers.js:549:17)
at processTimers (internal/timers.js:492:7)
这篇文章是2016年的,所以我想也许语法已经被弃用了。我想知道是否有人可以帮助我指出正确的方向?
2条答案
按热度按时间lyfkaqu11#
您可以添加以下条件,详细信息请参见“访问主模块”。
例如
index.ts
:index.test.ts
:集成测试结果:
11dmarpk2#
嗨,世界!我的小解决方案是:
检查这个:所有都取决于您的测试标记...例如,我正在使用Mocha和ChaiAssert库。