我有一系列功能,每个功能执行各种Firestore交互。如何使用Jest模拟这些Firestore调用?我想避免使用图书馆。
当我使用jest.mock("firebase/app")和jest.mock("firebase/firestore")其他版本时,我将得到null的TypeErrors或表明我仍在引用实际导入而不是模拟的错误:Error: ... make sure you call initializeApp()。
例如,我要测试的一个简单函数:
import firebase from "firebase/app";
import "firebase/firestore";
export const setDocData = (id, data) => {
const newDoc = {
created: firebase.firestore.FieldValue.serverTimestamp(),
...data
};
firebase
.firestore()
.doc("docs/" + id)
.set(newDoc);
};
Run Code Online (Sandbox Code Playgroud)
请注意,如何照常导入firebase,然后导入firestore的副作用。还要注意,如何首先将Firestore调用为函数,然后再引用为属性。我相信这是我麻烦的根源。