Javascript 导出的普通组件在测试期间仍需要存储
我正在导出导航栏组件,如下所示:Javascript 导出的普通组件在测试期间仍需要存储,javascript,reactjs,enzyme,Javascript,Reactjs,Enzyme,我正在导出导航栏组件,如下所示: export const Navbar=({user})=>( {text.feedPathText} {text.viewingsPathText} {text.defaultTheater} {`${user.firstName}${user.lastName}`} ); 常量mapStateToProps=状态=>({ 用户:state.currentUser.user }); Navbar.propTypes={ 用户:PropTypes.shape({
export const Navbar=({user})=>(
{text.feedPathText}
{text.viewingsPathText}
{text.defaultTheater}
{`${user.firstName}${user.lastName}`}
);
常量mapStateToProps=状态=>({
用户:state.currentUser.user
});
Navbar.propTypes={
用户:PropTypes.shape({
profilePictureUrl:PropTypes.string,
名字:PropTypes.string,
lastName:PropTypes.string
})
};
导出默认连接(
MapStateTops,
无效的
)(导航栏);
当我引入它来测试受保护的路由时:
从“React”导入React;
从“酶”导入{mount};
从“react router dom”导入{BrowserRouter};
从“../index”导入{ProtectedRoute};
从“../../../Navbar”导入{Navbar};
描述('Auth Component',()=>{
常量用户={
名字:'第一',
lastName:“Last”,
profilePictureUrl:“avatar.jpeg”
};
常量道具={
组件:()=>,
路径:“”
};
常量mountRoute=isAuth=>
坐骑(
);
它('如果isAuth为true,则呈现组件',()=>{
const wrapper=mountRoute(真);
expect(wrapper.find('#component').exists()).toBe(true);
});
});
它给了我一个错误,它期望一个存储连接到组件
在“连接(导航栏)”的上下文中找不到“存储”
不完全清楚为什么会发生这种情况。我正在正确导入普通组件,对吗?如果您想测试组件而不需要连接组件的任何上下文或任何副作用,请使用
shallow
渲染而不是mount
。使用mount
会呈现每个子组件,因此如果您有任何依赖于任何上下文的嵌套组件,则该测试将失败,除非您在测试中模拟该上下文
const mountRoute = isAuth =>
shallow(
<BrowserRouter>
<Navbar user={user} />
<ProtectedRoute isAuth={isAuth} {...props} />
</BrowserRouter>
);
const mountRoute=isAuth=>
浅薄的(
);
您应该考虑的是导入默认连接组件而不是类,因为这是您在生产中使用它的方式。正如主要酶开发人员在本
中所解释的,如果您想测试组件而不需要连接组件的任何上下文或任何副作用,请使用浅层
渲染而不是装载
。使用mount
会呈现每个子组件,因此如果您有任何依赖于任何上下文的嵌套组件,则该测试将失败,除非您在测试中模拟该上下文
const mountRoute = isAuth =>
shallow(
<BrowserRouter>
<Navbar user={user} />
<ProtectedRoute isAuth={isAuth} {...props} />
</BrowserRouter>
);
const mountRoute=isAuth=>
浅薄的(
);
另一件你应该考虑的是导入默认的连接组件而不是类,因为这是你在生产中使用它的方式,因为在这个
中解释了主要的酶开发者。