我正在尝试使用Jest测试Cloud Firestore,但是出现以下错误。
const admin = require('firebase-admin');
const serviceAccount = require("../../../config/YOUR-PROJECT-NAME-firebase-adminsdk-XXXX-XXXXXX.json");
// const myfirestore: any = new MyFireStore()
describe('MyFirestore', () =>{
it('getDocument', async () => {
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://unittest-dfb64.firebaseio.com"
});
let result = false
const db = admin.firestore();
const collectionRef = db.collection('test')
const docRef = collectionRef.doc('testDoc')
const getDoc = await docRef.get()
if (getDoc && getDoc.exists) {
result = getDoc.data()
}
expect(result).toEqual('testdata')
}, 100000)
“验证错误:TypeError:提取不是函数”。
我在Google上搜索了很多,但找不到有关此错误的任何提示。 在Jest测试中访问Firestore数据的正确方法是什么? 非常感谢您的提前帮助。
完整的代码在这里上传。
https://github.com/goodpic/firebase-graphql-boilerplate
我检查并尝试了这些文档,但无法弄清此错误的根源。
https://firebase.google.com/docs/functions/unit-testing https://github.com/firebase/functions-samples/blob/master/quickstarts/uppercase/functions/test/test.online.js https://gist.github.com/starhoshi/21d1fb870d485a95c86fe93cfe1ac240
答案 0 :(得分:0)
我终于找到了这个问题的根源。该问题是由Jest和gaxios项目之间的不兼容引起的。
https://github.com/firebase/firebase-admin-node/issues/512#issuecomment-487218219
作为该问题的解决方法,我可以按照注释中的说明将gaxios降级为1.8.3来解决。
"dependencies": {
"firebase-admin": "^7.3.0",
"gaxios": "1.8.3"
},
"resolutions": {
"**/gaxios": "1.8.3"
},
答案 1 :(得分:0)
此问题已在firebase-admin 8.1.0中修复
https://github.com/firebase/firebase-admin-node/issues/512#issuecomment-503392508