【发布时间】:2020-09-27 15:47:36
【问题描述】:
我已经密切关注示例,但我无法让 MemoryRouter(您应该如何测试路由组件?)使用 jest 和酶进行测试。
我想导航到其中一条路线,并将其反映在我的快照中。下面的代码尝试使用 MemoryRouter 导航到“/A”,所以我假设我会看到<div>A</div>
import React from 'react';
import Enzyme, {mount} from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
import {BrowserRouter as Router, MemoryRouter, Route, Switch} from 'react-router-dom';
Enzyme.configure({adapter: new Adapter()});
describe('Routing test', () => {
let wrapper;
beforeEach(() => {
wrapper = mount(
<MemoryRouter initialEntries={["/A"]}>
<div className={"Test"}>This is my Test Component and should not have any test specific code in it
<Router>
<Switch>
<Route path={"/A"}>
<div className={"A"}>A</div>
</Route>
<Route path={"/B"}>
<div>B</div>
</Route>
</Switch>
</Router>
</div>
</MemoryRouter>
);
});
afterEach(() => {
wrapper.unmount();
});
it('matches snapshot', () => {
expect(wrapper.find(".Test")).toHaveLength(1); //this ok
expect(wrapper.find(".A")).toHaveLength(1); //but this is not ok :( It should find A
});
});
我只看到<div>Test</div>而不是<div>Test<div>A</div></div>
注意:我的示例被简化为一类。我的真实情况是<div>Test...</div> 是一个单独的组件。
【问题讨论】:
标签: react-router jestjs enzyme