Jest + Firebase: TypeError: Cannot read property 'define
Jest + Firebase: TypeError: Cannot read property 'defineProperties' of undefined
我目前正在做一个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')
中的import
和react-native
, firebase将不会包含在测试文件中!下面是我的github repo,它会引导您完成重现错误的步骤,以及如何修复它。
也可能有过时的jest缓存,这可能需要您运行
。/node_modules开玩笑/bin/jest.js——no-cach
每次我更改与预处理器选项有关的任何内容时,似乎都会发生这种情况。
相关文章:
- $(this).prop('property') vs. this.property
- 为什么要对define.md和module.exports进行条件检查,以及条件何时通过
- 为什么JavaScript可以'找不到给定的InnerHTML并返回Cannot set property
- ACE编辑器正在删除模块,因为define是't一根绳子
- 在RequireJS define函数中如何处理参数
- 'define' 在 RequireJS 和 Webapp Yo 生成器上未定义错误
- Jquery Dynamic property
- RequireJs shim:如何防止 define() {..} 中重复的模块名称
- 是否有JavaScript DEFINE 指令等效项
- 为什么“如果( !Object.property)“,如果 Object 未定义,则中断
- 我怎样才能让JSLint停止抱怨Ember.js“.property()”
- RequireJs in IE8: "no define call for.."
- 将 AMD 支持添加到库时,是否也应该在 define() 中列出其依赖项
- ngRepeat filter by array-property
- JasmineJS 'isNot' property
- 我怎么能用“;var=新的外部面板“;并且只有viewport或Ext.define?(sencha touch 2)
- EXT JS可以't从其他.js中获取Define
- 如何在Javascript/AngularJS中动态地将foo设置为Object Property Name
- 使用es6模块:未捕获ReferenceError:define未定义
- Jest + Firebase: TypeError: Cannot read property 'define