Bor*_*ald 5 firebase firebase-security jestjs google-cloud-firestore
我正在尝试设置我的测试环境来使用 firestore 测试我的安全性。我从https://firebase.google.com/docs/rules/unit-tests#before_you_run_the_emulator复制了此代码
let testEnv : RulesTestEnvironment;
beforeAll(async () => {
testEnv = await initializeTestEnvironment({
projectId: "demo-project-1234",
firestore: {
rules: fs.readFileSync('firestore.rules', 'utf8'),
},
});
});
Run Code Online (Sandbox Code Playgroud)
但是,我收到此错误。
必须指定 firestore 模拟器的主机和端口。(您可以使用 firebase emulators:exec './your-test-script' 包装测试脚本以启用自动发现,或通过initializeTestEnvironment({firestore: {host, port}})手动指定。
有人知道如何解决这个问题吗?
编辑
我尝试将主机和端口添加到正在运行的模拟器中,如下所示
let testEnv : RulesTestEnvironment;
beforeAll(async () => {
testEnv = await initializeTestEnvironment({
projectId: "comment-section-e9c09",
firestore: {
rules: fs.readFileSync('firestore.rules', 'utf8'),
host:'localhost',
port:8080
},
});
});
Run Code Online (Sandbox Code Playgroud)
现在它似乎能够连接到我的模拟器,但是当我尝试 fx 清除数据库时
test("sefse", () => {
testEnv.clearDatabase()
})
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
[UnhandledPromiseRejection:此错误的根源是在没有 catch 块的情况下抛出异步函数内部,或者拒绝未使用 .catch() 处理的 Promise。该承诺被拒绝,原因是“错误:必须指定数据库模拟器的主机和端口。(您可以使用 'firebase emulators:exec './your-test-script'' 包装测试脚本以启用自动发现,或者通过initializeTestEnvironment({database: {host, port}})手动指定。".] {
小智 0
您是否像这样在 firebase.json 文件中指定了 firestore 端口和规则路径?
"emulators": {
"firestore": {
"port": 8080
}
},
"firestore": {
"rules": "./rules/firestore.rules"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1533 次 |
| 最近记录: |