【发布时间】:2019-03-21 07:38:47
【问题描述】:
我想为我的路由器编写测试用例。我有我想在测试用例期间模拟的 const 对象。如何更改测试文件中的用户对象。
const user = {
isAuthenticated: true
};
export const PrivateRoute = ({ component: Component, ...rest }) => {
return (
<Route
{...rest}
render={props =>
user.isAuthenticated ? (
<Component {...props} />
) : (
<Redirect
to={{
pathname: "/login",
state: { from: props.location }
}}
/>
)
}
/>
);
};
test.js
it("should return login route", () => {
const route = <PrivateRoute path="/" component={()=>{}} />
expect(route)..toMatchSnapshot();
});
it("should return home route", () => {
const route = <PrivateRoute path="/" component={()=>{}} />
expect(route)..toMatchSnapshot();
});
【问题讨论】:
-
如果不导出
user,则不能。目前尚不清楚为什么它必须是其他任何地方都无法访问的常量。 -
@estus:
const user仅用于此文件,这就是为什么我将其放入此文件本身的原因。即使我导出用户,我怎样才能让测试用例使用导出的用户? -
这个模块内的用户是否也改变了?使用常量来存储全局状态不是一个好习惯,尤其是因为这会使测试变得更加复杂。