在Jest手动模拟中导入(在__mocks__中)有时是不确定的

时间:2019-03-20 02:36:21

标签: typescript firebase jestjs integration-testing

我想在Jest模拟中使用Firebase Firestore模拟器进行集成测试。我的src/__mocks__/firebase.ts是:

import mockFirebase from '@firebase/testing'

console.log(mockFirebase)

export const firebase = mockFirebase.initializeAdminApp({
  projectId: `autoflocc-${process.pid}`,
})

export const db = firebase.firestore()

它被导入到测试代码中,如下所示:

import mockFirebase from '@firebase/testing'
jest.mock('../src/firebase')

但是,当模拟文件运行时,mockFirebaseundefined(根据console.log)。我尝试导入其他模块和一些工作(import _ from 'lodash'),但是其他却不这样做(import x from 'firebase-functions'),还返回了undefined

有什么想法为什么有些导入可以在手动模拟中起作用,而另一些则不能?

注意:这是打字稿,可能会影响它。

1 个答案:

答案 0 :(得分:0)

此语法:

import mockFirebase from '@firebase/testing';

...正在尝试将@firebase/testing的{​​{3}}导入为mockFirebase ...

...但是mockFirebase由于undefined default export而以@firebase/testing结尾。


将所有内容导入@firebase/testing的正确语法为:

import * as mockFirebase from '@firebase/testing';