【发布时间】:2021-11-11 17:49:12
【问题描述】:
我正在按照本指南设置 Firebase 模拟器来测试我的实时数据库安全规则:https://firebase.google.com/docs/emulator-suite/connect_rtdb#clear_your_database_between_tests
在“在测试之间清除您的数据库”中,它建议这样做:
firebase.database().ref().set(null);
但是,我的安全规则阻止我的应用这样做。
这是我的代码:
import * as firebase from '@firebase/testing';
import fs from 'fs';
const app = firebase.initializeTestApp({
databaseName: 'myDb',
auth: {
uid: 'myuid',
},
});
describe('test', () => {
beforeEach(async () => {
await firebase.loadDatabaseRules({
databaseName: 'mydb',
rules: fs.readFileSync('database.rules.json', 'utf8'),
});
await app.database().ref().set(null) // This line throws a permission denied error
});
afterAll(async () => {
await Promise.all(firebase.apps().map((app) => app.delete()));
});
it('test', async (done) => {
// ... //
});
}
如何在测试之间重置数据库?
【问题讨论】:
标签: javascript firebase-realtime-database firebase-security firebase-tools