我在我的React应用程序中使用react-router-dom。应用在浏览器中运行正常,没有任何错误或警告, 但是当我编写测试时,我得到一个警告'React.createElement:type is ....'
这是我的测试代码:
import React from 'react';
import NavBar from './components/nav-bar';
import {configure, mount, shallow} from 'enzyme';
import Adapter from 'enzyme-adapter-react-16'
import {expect} from 'chai';
import App from "./App";
import {MemoryRouter} from 'react-router';
configure({adapter: new Adapter()});
jest.mock('react-router-dom', () => ({
useLocation: jest.fn().mockReturnValue({
pathname: '/another-route',
search: '',
hash: '',
state: null,
key: '5nvxpbdafa',
}),
}));
describe("Movie Library Testing", () => {
it('renders react app', () => {
const wrapper = shallow(
<App/>
);
expect(wrapper.find(NavBar)).to.have.lengthOf(1);
});
it('renders an `.navbar-brand', () => {
const wrapper = mount(
<MemoryRouter>
<NavBar user={null}/>
</MemoryRouter>
);
expect(wrapper.find('.navbar-brand')).to.have.lengthOf(1);
});
});
我遇到以下错误:
Warning: React.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: undefined. You likely forgot to export your componen
t from the file it's defined in, or you might have mixed up default and named imports.
Check your code at nav-bar.tsx:41.
in NavBar (at App.test.tsx:31)
in Router (created by MemoryRouter)
in MemoryRouter (created by WrapperComponent)
in WrapperComponent
NavBar.tsx在给定的行中具有以下代码:
import { NavLink } from 'react-router-dom'
<NavLink className="nav-link" to="/login">Login</NavLink>
export default NavBar;
答案 0 :(得分:1)
更改
import {NavBar} from './components';
到
import NavBar from './components';