У меня есть компонент заголовка, как показано ниже:
import { useLocation } from "react-router-dom";
const Header = () => {
let route = useLocation().pathname;
return route === "/user" ? <ComponentA /> : <ComponentB />;
}
Как вы будете насмехаться над этим useLocation (), чтобы получить путь от имени пользователя?
Я не могу просто вызвать компонент Header, как показано ниже в мой тестовый файл, когда я получаю сообщение об ошибке:
TypeError: Невозможно прочитать свойство 'location' undefined при использовании useLocation
describe("<Header/>", () => {
it("call the header component", () => {
const wrapper = shallow(<Header />);
expect(wrapper.find(ComponentA)).toHaveLength(1);
});
});
Я пытался выглядеть похожим на ссылка Как протестировать компоненты, используя новые обработчики перехватчика реакции? , но это не сработало.
Я пробовал, как показано ниже:
const wrapper = shallow(
<Provider store={store}>
<MemoryRouter initialEntries={['/abc']}>
<Switch>
<AppRouter />
</Switch>
</MemoryRouter>
</Provider>,
);
jestExpect(wrapper.find(AppRouter)
.dive()
.find(Route)
.filter({path: '/abc'})
.renderProp('render', { history: mockedHistory})
.find(ContainerABC)
).toHaveLength(1);
по ссылке Тестирование реакции-маршрутизатор с неглубоким рендерингом , но он не работал.
Пожалуйста, дайте мне знать.
Заранее спасибо.