我正在尝试测试我的组件,但我不断收到此错误: TypeError:无法读取属性' find'未定义的
在将组件转换为无状态组件之前,我的测试工作正常。根据我的理解,您也可以测试功能无状态组件。我不知道我在这里做错了什么。
我的测试文件
~
我的组件
import * as React from 'react';
import { LeftNavigation } from "../src/components/LeftNavigation";
import { mount } from 'enzyme';
describe("<LeftNavigation />", () => {
const wrapper;
beforeEach(() => {
wrapper = mount(
<LeftNavigation title="Protocol Vantage Points" path="/hello"/>
);
});
it("renders the title", () => {
expect(wrapper.find(".uk-h3 span").text()).toBe("Protocol Vantage Points");
});
it("renders first menu item 'On demand tests'", () => {
expect(wrapper.find("#synth-left-nav .uk-nav li a").at(0).text()).toBe("On demand tests");
});
it("renders second menu item 'Feel status'", () => {
expect(wrapper.find("#synth-left-nav .uk-nav li a").at(1).text()).toBe("Fleet status");
});
});
答案 0 :(得分:1)
我弄明白了这个问题。测试呈现import * as Name from 'module';
import { A, B } from 'module';
或<Link>
的组件可能会导致错误和有关上下文的警告。建议您将测试包装在<Route>
或<StaticRouter>
中。请查看此参考:https://github.com/ReactTraining/react-router/blob/master/packages/react-router/docs/guides/testing.md
这是我的解决方案:
<MemoryRouter>