我目前正在开发一个react本机项目,并希望使用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"
}
}
答案 0 :(得分:3)
问题是安装和配置“jest-react-native”和“react-native”预设打破我们“导入”firebase的能力!修复方法是在test.js文件中require
firebase(不 import
),并添加导入react-native
的行。如果添加 import
react-native
到require('firebase')
,则firebase将不会包含在测试文件中!这是我的github repo,它将指导您完成重现错误的步骤以及如何解决错误。
可能还有一个陈旧的jest缓存,可能需要你运行
./ node_modules / jest / bin / jest.js --no-cach
每当我改变与预处理器选项有关的任何事情时,这似乎都会发生。