Reactjs 如何更改已安装组件的历史记录以进行测试?
在浏览react router的文档时,我发现了一个实用程序组件,可以帮助跟踪页面更改(用于任何需要的用途)。这是一个组件:Reactjs 如何更改已安装组件的历史记录以进行测试?,reactjs,testing,react-router,jestjs,enzyme,Reactjs,Testing,React Router,Jestjs,Enzyme,在浏览react router的文档时,我发现了一个实用程序组件,可以帮助跟踪页面更改(用于任何需要的用途)。这是一个组件: export const PageTracker = (props: PageTrackerProps) => { const { callback } = props; let location = useLocation(); React.useEffect(() => { callback(location); }, [loca
export const PageTracker = (props: PageTrackerProps) => {
const { callback } = props;
let location = useLocation();
React.useEffect(() => {
callback(location);
}, [location, callback]);
return null;
};
我想给它添加一个测试,以确保回调确实在位置更改时被调用,但无法确定
describe("<PageTracker />", () => {
let wrapper;
let history;
test("The callback is called when route changes", () => {
const mockCallback = jest.fn();
wrapper = mount(
<MemoryRouter initialEntries={["/"]}>
<PageTracker callback={mockCallback} />
</MemoryRouter>
);
history = wrapper.instance().history;
expect(mockCallback).toBeCalledTimes(1);
history.push("/new-url");
expect(mockCallback).toBeCalledTimes(2);
});
});
现在我在这一行得到一个错误consthistory=wrapper.instance().history代码>说const history=wrapper.instance().history代码>
我对玩笑/酶没有太多的经验,希望你能给我指出正确的方向
describe("<PageTracker />", () => {
test("The callback is called when route changes", () => {
const mockCallback = jest.fn();
const wrapper = mount(
<MemoryRouter initialEntries={["/"]}>
<PageTracker callback={mockCallback} />
</MemoryRouter>
);
const history = wrapper.instance().history;
expect(mockCallback).toBeCalledTimes(1);
history.push("/new-url");
expect(mockCallback).toBeCalledTimes(2);
});
});