我目前正在开发一个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)
如果我用’react’替换import import 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”和“react-native”预设会破坏我们“导入”firebase的能力!修复是在test.js文件中要求firebase(而不是import),并添加一行导入react-native.除了require(‘firebase’)之外,如果不导入react-native,firebase将不会包含在测试文件中!这是我的github
repo,它将引导您完成重现错误的步骤,以及如何解决它.
可能还有一个陈旧的jest缓存可能需要您运行
./node_modules/jest/bin/jest.js –no-cach
每当我改变与预处理器选项有关的任何事情时,这似乎都会发生.