То, что я закончил, было чем-то вроде этого.На самом первом монтировании он возвращает /
, на втором монтировании возвращает /second
и оттуда возвращается в состояние по умолчанию 0 (/
)
jest.mock('./history', () => ({
listen: jest
.fn()
.mockImplementationOnce(cb => {
cb({ pathname: '/' });
})
.mockImplementationOnce(cb => {
cb({ pathname: '/second' });
}),
}));
И сам тест(чтобы протестировать /second
и /
в 1 одном тесте)
it('changes pathStep when called', () => {
expect(component.state().pathStep).toBe(0);
component = mount(<MyComponent />);
expect(component.state().pathStep).toBe(1);
component = mount(<MyComponent />);
expect(component.state().pathStep).toBe(0);
});
Но для выполнения теста, который я изначально задал, будет достаточно:
jest.mock('./history', () => ({
listen: cb => {
cb({ pathname: '/second' });
},
}));
Мне просто нужно было передать обратный вызов при издевательстве, настолько близком к тому, что у меня было раньше, но с некоторым сопряжением удалось заставить его работать:)
Надеюсь, что это имеет смысл и поможет кому-то в будущем