В тесте Jest говорится, что withRouter () не является функцией - PullRequest
1 голос
/ 10 марта 2019

Итак, у меня есть приложение React, и я написал множество модульных тестов для своих компонентов.Одним из таких компонентов является мой компонент VideoNavbar.Мои тесты работали идеально, пока я не решил обернуть экспорт компонента по умолчанию с помощью withRouter ().Теперь мои Jest-тесты даже не запускаются со следующей ошибкой:

FAIL test/components/AppContent/VideoNavbar/VideoNavbar.Spec.js
  ● Test suite failed to run

    TypeError: (0 , _reactRouterDom.withRouter) is not a function

Опять же, сам тест вообще не был изменен.Это работало отлично, пока я не добавил к нему withRouter ().

Чтобы сделать вещи еще более странными, у меня есть еще один компонент, который я обертываю с помощью withRouter (), и он также имеет Jest-тесты, и этоне получает эту ошибку.

Наконец, приложение по-прежнему работает отлично.Я могу начать все это, и все, включая компонент VideoNavbar, работает.Это происходит только в тестах Jest.

У кого-нибудь есть идеи, что это может быть?

Редактировать: вот уменьшенная версия моего компонента, чтобы показать, как я импортирую ииспользуя withRouter ().Я оставил кучу вещей, чтобы сосредоточиться на важных частях.

import React, { useState } from 'react';
import { Link, withRouter } from 'react-router-dom';

const VideoNavbar = (props) => {
    const [ isOpen, setOpen ] = useState(false);
    const { isScanning, history, startFileScan } = props;
    const pathname = history.location.pathname;

    return (
        <JsxIsHere />
    );
};

export default withRouter(VideoNavbar);

1 Ответ

0 голосов
/ 10 марта 2019

Хорошо, это была глупая проблема.Я импортировал с помощью Router () следующим образом:

import { withRouter } from 'react-router-dom';

Это было основано на автоматическом завершении импорта, полученном из WebStorm.Тем не менее, реальный импорт:

import { withRouter } from 'react-router';

С этим все работает.

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