所以我有一个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);
答案 0 :(得分:0)
好,所以这是一个愚蠢的问题。我正在这样导入withRouter():
import { withRouter } from 'react-router-dom';
这是基于我从WebStorm获得的自动完成导入。但是,真正的导入是:
import { withRouter } from 'react-router';
有了这些,一切都会正常。