Jest + Firebase: TypeError: Cannot read property 'define

Jest + Firebase: TypeError: Cannot read property 'defineProperties' of undefined

本文关键字:define property Cannot Firebase TypeError Jest read      更新时间:2023-09-26

我目前正在做一个react native项目,想利用Firebase JS SDK。为了熟悉所有的API,我想到用Jest编写一些学习测试。这是我的测试:

import Firebase from 'firebase';
describe('Firebase', function() {
  it('should work', function() {
    expect(null).toBeNull()
  })
});

不幸的是,我得到这个错误:●测试套件运行失败

TypeError: Cannot read property 'defineProperties' of undefined
  at node_modules/firebase/app-node.js:18:234
  at Object.<anonymous> (node_modules/firebase/app-node.js:23:260)
  at Object.<anonymous> (node_modules/firebase/firebase-node.js:8:16)
  at Object.<anonymous> (firebase.test.js:1:104)

如果我用import React from 'react'替换导入状态,一切都可以正常工作。那么为什么我不能用Firebase来测试一些API调用呢?

这是我的package.json:

{
  ...,
  "dependencies": {
    "firebase": "^3.5.0",
    "react": "15.3.2",
    "react-native": "0.35.0"
  },
  "jest": {
    "preset": "jest-react-native"
  },
  "devDependencies": {
    "babel-jest": "16.0.0",
    "babel-preset-react-native": "1.9.0",
    "jest": "16.0.1",
    "jest-react-native": "16.0.0",
    "react-test-renderer": "15.3.2"
  }
}

问题是安装和配置"jest-react-native"answers"react-native"预置会破坏我们"导入" firebase的能力!修复是require firebase (而不是 import)在您的test.js文件中,并添加一行导入react-native。如果在中没有添加require('firebase')中的importreact-native, firebase将不会包含在测试文件中!下面是我的github repo,它会引导您完成重现错误的步骤,以及如何修复它。

也可能有过时的jest缓存,这可能需要您运行

。/node_modules开玩笑/bin/jest.js——no-cach

每次我更改与预处理器选项有关的任何内容时,似乎都会发生这种情况。