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=>
浅薄的(
);

另一件你应该考虑的是导入默认的连接组件而不是类,因为这是你在生产中使用它的方式,因为在这个

中解释了主要的酶开发者。