使用 firebase auth 模拟器进行单元测试需要真实的服务帐户吗?

mel*_*r55 7 javascript firebase

我们正在使用 firebase 模拟器来编写集成测试。我们的功能之一是修改用户的声明。因此,我们的测试会检查是否已添加声明。在我们的测试中,我们调用以下函数:

         admin.auth().getUser(user.userId)
Run Code Online (Sandbox Code Playgroud)

我们的目的是检查这些声明。不幸的是,当调用这个函数时,我们得到一个错误。

(节点:96985)UnhandledPromiseRejectionWarning:错误:通过“凭据”属性提供给initializeApp()的凭据实现无法获取有效的Google OAuth2访问令牌,并出现以下错误:“获取访问令牌时出错:发出请求时出错:getaddrinfo ENOTFOUND元数据.google.internal。错误代码:ENOTFOUND”。

请记住,我们正在针对本地身份验证模拟器运行,而不是云服务。我们在 github 上发现了一个似乎相关的问题:https ://github.com/firebase/firebase-tools/issues/1708

不幸的是,该问题中建议的操作过程是使用实际云服务中的实际服务帐户文件。我们不会将此类文件签入我们的存储库,因为这会构成安全隐患。有谁知道处理这种情况的更好方法?

如果相关,我们还会收到以下警告:

{"severity":"WARNING","message":"警告,FIREBASE_CONFIG 和 GCLOUD_PROJECT 环境变量丢失。初始化 firebase-admin 将失败"}