Мне нужно проверить следующий компонент (в основном я хочу проверить наличие компонента App, когда присутствуют имя пользователя и refre sh токен):
const ParentRouter = () => {
const { username, refreshToken } = useContext(GlobalContext);
return (
<Switch data-test="component-ParentRouter">
{console.log("test1")}
<Route path="/login" component={LoginPage} />
<Route path="/forgotpassword" component={LoginPage} />
{console.log("test2")}
<ProtectedRoute
isAllowed={refreshToken}
username={username}
path="/"
component={App}
/>
</Switch>
);
};
Это моя попытка, поэтому далеко:
const TestProtectedRouteWithCredentials = () => (
<MemoryRouter initialEntries={["/ProjectsOverview/"]}>
<GlobalContext.Provider
value={{
username: "testUser1",
refreshToken: "hfsjkadhfjkshdfjkshdafs"
}}
>
<ParentRouter />
</GlobalContext.Provider>
</MemoryRouter>
);
test("if userame and props then allow redirect to protected route i.e. app", () => {
const wrapper = shallow(<TestProtectedRouteWithCredentials />);
expect(
wrapper
.find(ParentRouter)
.dive()
.find(App)
).toHaveLength(1);
});
Хотя я не могу заставить его работать.
TypeError: Невозможно уничтожить свойство username
из 'undefined' или 'null'.
Я искал вокруг, но не нашел то, что искал. Если кто-нибудь сможет показать мне достойный способ тестирования этого компонента с использованием Jest и Enzyme, я был бы очень признателен.