【发布时间】:2019-08-10 16:10:18
【问题描述】:
我想在我的 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')
但是,当模拟文件运行时mockFirebase 是undefined(根据console.log)。我试过导入其他模块和一些工作(import _ from 'lodash'),但其他人没有(import x from 'firebase-functions'),也返回undefined。
知道为什么某些导入在手动模拟中有效,而在其他模拟中无效?
注意:这是 Typescript,可能会影响它。
【问题讨论】:
-
如果您的应用程序中有循环导入,可能会导致 Jest 模拟导入为未定义。 Jest.mock 会将代码提升到文件的顶部,如果你有循环导入,jest 会变得非常混乱。确保将代码充分分离以避免任何循环导入。
标签: typescript firebase jestjs integration-testing