使用Jest在线测试Firestore时出错:“验证错误:TypeError:提取不是函数”

时间:2019-05-24 23:11:37

标签: javascript firebase google-cloud-firestore jestjs google-cloud-functions

我正在尝试使用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

2 个答案:

答案 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)