是的,我可以在我的摩卡测试中运行process.exit()
或--exit
,但这似乎是错误的。
我正在维护一些代码中的firebase-admin,并且尝试运行mocha测试,但是根据wtfnode:
wtfnode node_modules/.bin/_mocha --compilers coffee:coffee-script/register
Firebase负责使我的进程保持打开状态:
- Timers:
- (3300000 ~ 55 min) (anonymous) @ /home/wayne/programming/universe/library/server/node_modu
les/firebase-admin/lib/firebase-app.js:147
- Intervals:
- (45000 ~ 45 s) (anonymous) @ /home/wayne/programming/universe/library/server/node_modules/
firebase-admin/lib/database/database.js:199
非常感谢,Firebase。这真令人沮丧。我可以修复数据库部分:
db = app.database();
db.goOffline();
景气。做完了现在我只看到不会死的计时器,如何杀死它?我尝试查看该源代码,这使我指向了这个小地方:
FirebaseAppInternals.prototype.setTokenRefreshTimeout = function (delayInMilliseconds, numRetries) {
var _this = this;
this.tokenRefreshTimeout_ = setTimeout(function () {
_this.getToken(/* forceRefresh */ true)
.catch(function (error) {
// Ignore the error since this might just be an intermittent failure. If we really cannot
// refresh the token, an error will be logged once the existing token expires and we try
// to fetch a fresh one.
if (numRetries > 0) {
_this.setTokenRefreshTimeout(60 * 1000, numRetries - 1);
}
});
}, delayInMilliseconds);
};
不幸的是,我不确定如何获得tokenRefreshTimeout_
,所以我可以cancelTimer
。
有没有办法告诉firebase-admin我已经完成了,它真的需要立即停止,还是我被--exit
困住了?
答案 0 :(得分:2)
@Wayne Werner正确回答了他自己的问题。
我为使用firebase admin SDK和firestore的人们提供了更多背景信息。 GitHub issue有助于回答我的问题。
您需要确保在Mocha上下文中使用Config::ConnectWithoutContext ("/NodeList/1/DeviceList/*/Phy/MonitorSnifferRx", MakeCallback (&DecodeRxPktCB));
初始化firebase,然后在Mocha上下文中使用before()
删除应用程序
after()
答案 1 :(得分:1)
事实证明,firebase文档确实确实是真的含糊不清。 It says
使该应用无法使用,并释放所有相关服务的资源。
听起来像是“使您的应用托管在firebase.com上,无法使用,并释放所有相关服务的资源”
真正的意思是“使该应用程序的Javascript实例不可用,并释放资源...”
因此,要使所有内容在Mocha测试中关闭,您需要使用app.delete();
它可能看起来像这样:
after(() => {
var app = require('@yourstuff/FirebaseApp');
app.delete();
});
根据您的需求,它可能看起来有些不同。