为了使用jest运行完整测试,同时保留数据库规则,是否可以模拟经过身份验证的Firebase用户?

为了使用jest运行完整测试,同时保留数据库规则,是否可以模拟经过身份验证的Firebase用户?,firebase,unit-testing,testing,firebase-realtime-database,jestjs,Firebase,Unit Testing,Testing,Firebase Realtime Database,Jestjs,我有一个Firebase实时数据库,其中包含一系列围绕基本用户身份验证的基本规则: { "rules": { ".read": false, ".write": false, "users": { "$user_id" : { ".read": "$user_id === auth.uid", ".write": "$user_id === auth.uid", } } } } 这些规则取决于au

我有一个Firebase实时数据库,其中包含一系列围绕基本用户身份验证的基本规则:

{
  "rules": {
    ".read": false,
    ".write": false,
    "users": {
      "$user_id" : {
        ".read": "$user_id === auth.uid",
        ".write": "$user_id === auth.uid",
       }
    }
  }
}
这些规则取决于
auth.uid
内置Firebase变量,当用户使用任何给定的提供程序登录时,在开发/生产期间可以访问该变量

但是,当我使用相同的规则在重复的数据库上运行jest测试时,我无法访问此
auth.uid
,因为没有实际用户登录

有办法解决这个问题吗?一种在Firebase本身或通过我的客户端测试代码模拟某种测试用户的方法


我希望测试运行在一个数据库上,该数据库尽可能类似于常规数据库。我不想在测试数据库上有不同的规则结构。

我提出的可能解决方案是:

  • 设置测试环境变量,如
    FIREBASE\u test\u UID
  • 运行测试时引用此uid
  • 手动将比较
    $user\u id“
    auth.uid
    的规则更改为将其与实际存储的
    FIREBASE\u TEST\u uid
  • 现在,数据库受到保护,不被公共的非“身份验证”用户读写,而规则结构保持相似,并且
    FIREBASE\u TEST\u UID
    是私有的(.git文件)