Reactjs TypeError:\u firebase2.default.storage不是函数(Jest测试失败)
我有一个简单的浅层测试Reactjs TypeError:\u firebase2.default.storage不是函数(Jest测试失败),reactjs,firebase-storage,jestjs,Reactjs,Firebase Storage,Jestjs,我有一个简单的浅层测试 import React from 'react'; import { shallow } from 'enzyme'; import Layout from '../containers/' it('renders without crashing', () => { shallow(<Layout />); }); 从“React”导入React; 从“酶”导入{shall}; 从“../containers/”导入布局 它('渲染而不崩溃'
import React from 'react';
import { shallow } from 'enzyme';
import Layout from '../containers/'
it('renders without crashing', () => {
shallow(<Layout />);
});
从“React”导入React;
从“酶”导入{shall};
从“../containers/”导入布局
它('渲染而不崩溃',()=>{
浅();
});
将firebase.storage()
功能添加到我的应用程序后(不是直接在Layout.jsx中,而是在Layout的子级中)-我现在无法通过这个简单的测试。我的印象是这里的浅层渲染是。。。嗯,很浅。。。没有
应该注意的是,我所有的firebase组件都工作得很好,除了这个失败的测试之外,我没有任何错误
我已经尝试引入
导入'firebase/storage'
,但这不起作用。想法?我将package.json
中的测试脚本改写为react scripts test--env=jsdom--browser
,它成功了。你能提供更多关于布局组件和使用firebase.storeage()的组件实现的信息吗?使用shallow
确实只渲染没有子级的布局组件,但这并不意味着不会导入其他组件,因此如果您在顶层使用该函数,它将解释它失败的原因。另一个选项,尝试使用此选项禁用生命周期方法:确定。我的布局组件由我的路由器和来自react router dom的路由组件组成。这就是那里发生的一切。使用firebase.storage的组件位于布局中呈现的
中。我现在将在这里查看该链接。我在布局组件中没有使用任何生命周期方法。不过,这是一个很好的选择!正如我所说,我的布局组件实际上只是渲染路由组件,没有其他内容。带有firebase.storage()
的语句是在组件方法内部还是在实际组件外部,但在该文件中?该文件可能是由Layout.jsx
组件导入的,因此顶级的所有代码都将被执行。但是,组件内部的代码不应执行,因为浅(…)
不会呈现组件。啊。。。好主意。让我看看,亲爱的!谢谢你的意见!我会重新开始这个项目,如果你的答案有效的话,我会接受的!干杯