Jest + Firebase:TypeError:无法读取undefined的属性'defineProperties'

den*_*tra 7 javascript firebase jestjs react-native

我目前正在开发一个react本机项目,并希望使用Firebase JS SDK.为了熟悉它的所有API,我想到了用Jest编写一些学习测试.这是我的测试:

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

不幸的是我收到了这个错误:●测试套件无法运行

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)
Run Code Online (Sandbox Code Playgroud)

如果我替换导入状态,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"
  }
}
Run Code Online (Sandbox Code Playgroud)

Ben*_*uff 4

问题在于,安装和配置“jest-react-native”和“react-native”预设会破坏我们“导入”firebase 的能力!解决方法是在 test.js 文件中使用requirefirebase (而不是 import),并添加一行 import react-native。除了importingreact-native之外require('firebase') firebase 将不会包含在测试文件中!这是我的 github存储库,它将引导您完成重现错误的步骤以及如何修复它。

还可能存在陈旧的笑话缓存,可能需要您运行

./node_modules/jest/bin/jest.js --no-cach

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

请参阅有关缓存问题的笑话文档。