Unit testing emulator中firebase规则的简单单元测试总是失败

Unit testing emulator中firebase规则的简单单元测试总是失败,unit-testing,google-cloud-firestore,firebase-security,Unit Testing,Google Cloud Firestore,Firebase Security,我正在尝试为我的firestore规则设置单元测试,并且我遵循了,但是由于某种原因,firebase.AssertSuccessed.(testDoc.get())始终通过,即使根据安全规则我不允许 安全规则: rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /{document=**} { allow read, write: if

我正在尝试为我的firestore规则设置单元测试,并且我遵循了,但是由于某种原因,
firebase.AssertSuccessed.(testDoc.get())
始终通过,即使根据安全规则我不允许

安全规则:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if false;
    }
  }
}
单元测试:

process.env.FIRESTORE_EMULATOR_HOST = 'localhost:8090';
const assert = require('assert');
const firebase = require('@firebase/testing');

const PROJECT_ID = 'my-proj-id';

describe("Security Rules",()=>{

    it("monkeytest", async()=>{
        const db = firebase.initializeTestApp({projectId:PROJECT_ID}).firestore();
        const testDoc = db.collection("foo").doc('bar');
        await firebase.assertSucceeds(testDoc.get());
    })
});

无论我在安全规则中做了什么更改,这个单元测试总是通过的。当我使用
firebase.assertFails(testDoc.get())
时,不管我做了什么更改,测试总是会失败。

我正在使用emulator或
firebase tools 9.6.0版来检查您的,请运行以下命令:

firebase tools --version
firebase emulators:start
在此版本中,您在
firestore.rules
中所做的每一项更改都应重新启动仿真器以生效
Ctrl-C
取消当前模拟器并再次运行它(确保保存了
firestore.rules
中的更改),方法是执行以下命令:

firebase tools --version
firebase emulators:start

我使用的是
9.3.0版
,现在更新到
9.6.1
。同样的问题,当我现在取消仿真器并再次运行测试时,测试也通过了,没有像以前那样的“客户端处于脱机状态”。我正在使用mocha和
@firebase/testing
,因此出于某种原因,即使我在
firebase.json
中指定了另一个端口,后台仍有一个模拟器在8080端口上运行。单元测试总是针对这个仿真器进行测试,这意味着对另一个仿真器的任何更改/重新启动都没有效果。安全规则没有像您提到的那样自动更新的bug没有在8080更新模拟器。