我为firebase安全规则创建了一些单元测试。这项测试的一部分是试图进行非法操作并声称它们失败了。
我的问题与噪音有关;当我使用nodeunit运行测试时,firebase客户端会发出几个与此类似的日志:
FIREBASE WARNING:设置为/ user failed:permission_denied
我故意做非法操作时不想要这个输出,因为它只会导致噪音和混乱。
答案 0 :(得分:2)
无法禁用安全警告,因为它们是由Firebase SDK异步发出的。我通过在错误之前添加消息来解决这个问题:
>>> An intentional security error should be printed after this line...
答案 1 :(得分:2)
正如加藤所说,似乎没有官方的方法来禁用它。也就是说,如果你真的想要,进入源代码需要2秒钟,按Ctrl + F进行“警告”,并注释掉这一行:
"undefined"!==typeof console.warn?console.warn(b):console.log(b)
答案 2 :(得分:2)
在我们的测试套件中,我们将process.stderr.write重写为仅忽略firebase警告,如下所示:
<强>的Javascript 强>
process.stderr.write = (function(write) {
return function() {
if (!arguments[0].includes("FIREBASE WARNING"))
write.apply(process.stderr, arguments);
};
}(process.stderr.write));
打字稿(包括tslint修复)
process.stderr.write = (() => {
// tslint:disable-next-line:no-unbound-method
const write = process.stderr.write;
return function () {
if (!(arguments[0] as string).includes("FIREBASE WARNING")) {
return write.apply(process.stderr, arguments);
}
};
})();
答案 3 :(得分:1)
现在有一个选项可以在全局 firebase
对象上设置日志级别:
import firebase from 'firebase/app';
firebase.setLogLevel('silent')