我正在使用
所以我想使用firebase云函数对我的firestore触发器函数执行单元测试,我从这里的文档中阅读了步骤。
我想使用Firebase Emulator
执行单元测试。所以我假设我将在脱机模式下初始化SDK。文件上说
如果您希望编写完全脱机的测试,您可以在没有任何参数的情况下初始化SDK:
所以我这样初始化它
import * as firebase from "firebase-functions-test";
const test = firebase();
const wrapped = test.wrap(myFunctions.onCreate);
// rest of my test code
但当我运行测试时,出现了以下错误:
错误:无法加载默认凭据。浏览https://cloud.google.com/docs/authentication/getting-started获取更多信息。
因此,即使我将使用Firebase仿真器(脱机),但似乎需要提供凭据,如果使用联机模式,这是一个步骤,如本文文档中所述
所以我像这样初始化SDK
import * as firebase from "firebase-functions-test";
const test = firebase({
databaseURL: "https://xxx-b843e.firebaseio.com",
projectId: "xxx-b843e",
}, "../../../service-account.json");
const wrapped = test.wrap(myFunctions.onCreate);
// rest of my test code
但当我运行测试时,我有另一个错误
{“严重性”:“warning”,“message”:“warning、FIREBASE_CONFIG和GCLOUD_PROJECT环境变量丢失。初始化firebase-admin将失败”}
错误:../../../service-account.json处的文件不存在,或者它不是文件。指示:没有这样的文件或目录,lstat'/users/xxx/documents/service-account.json'
服务帐户json文件不存在?我相信我这样把路定对了
service-account.json文件如下图所示,我从firebase project Overview-->project Setting-->service accounts-->generate new private key中获得
如果我想在firebase模拟器中初始化firebase函数测试SDK,我应该怎么做?
Error: The file at ../../../service-account.json does not exist
该错误意味着在运行时(启动仿真程序时)找不到service-account.json
文件,因为相对路径不正确。
实际上,我使用intellisense引导我到service-account.json路径
intellisense建议的路径相对于执行代码的目录可能不正确。这是因为typescript在运行之前被编译,通常是从lib
或dist
文件夹中编译的,这意味着需要更改相对路径。
您可以使用绝对路径/my/absolutepath/to/service-account.json
,这是解决此问题的一种快速方法,但不是很容易移植的。
使用不同数量的../../
进行实验,以找到service-account.json
的确切相对路径。请尝试使用:
../../service-account.json
../../../service-account.json
很可能只有几个../