Jest and Enzyme, Invariant Violation, даже когда маршрутизатор уже включен в тест - PullRequest
0 голосов
/ 23 января 2020

Я пытаюсь протестировать компонент, который использует Link. Этот указанный компонент загружается родителем, который использует BrowserRouter.

. При выполнении теста я получаю сообщение об ошибке ниже:

  Invariant Violation: You should not use <Link> outside a <Router>

      16 |   const getPlanDetail = () => Promise.resolve(PlanDetail);
      17 |
    > 18 |   const wrapper = mount(
         |                   ^
      19 |     <StaticRouter location="/viewDetail/1" context={{}}>
      20 |       <PlanDetail getPlanDetail={getPlanDetail} />
      21 |     </StaticRouter>

И я не знаю, что делать. делать. Раньше просто добавление оболочки StaticRouter работало отлично, теперь я не уверен, чего не хватает.

Мой импорт в тестовый файл import {StaticRouter} from 'react-router-dom';

Также попытался обернуть компонент MemoryRouter вместо StaticRouter, тот же результат.

Есть идеи? Спасибо!

1 Ответ

0 голосов
/ 24 января 2020

Очевидно, мне не хватало этого шага:

Не забудьте высмеять BrowserRouter, используемый приложением. js, создав mocks / реакции-маршрутизатор-дом . js а вот как это издеваться:

import React from 'react';
const rrd = require('react-router-dom');
// Just render plain div with its children
rrd.BrowserRouter = ({children}) => <div>{children}</div>
module.exports = rrd;

Кредит на это сообщение в блоге .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...