Оказалось, что вы используете withRouter
на тестируемом компоненте.По сути, доступ к компоненту, заключенному в HOC, немного сложнее, чем вы пытаетесь сделать.
Прежде всего, я бы предложил прочитать мою статью о Средняя , чтобы иметь общее представление о возникающей проблеме.Позвольте мне подчеркнуть следующее предложение, которое я взял оттуда:
Фактическая проблема заключается в том, что вы не можете получить доступ к компоненту в HOC напрямую, вместо этого вы должны получить соответствующий компонент с более глубокого уровня.
Во-вторых, вам следует изменить монтаж компонента следующим образом:
// Imports ...
describe('something', () => {
let wrapper;
beforeEach(() => {
// This can be used to do full DOM rendering: mount(shallow(<MyComponent />).get(0));
wrapper = shallow(shallow(<MyComponent />).get(0));
// Notice that I don't use <BrowserRouter />. Obviously, pass the necessary props to the component.
});
it('tests something', () => {
// I don't know exactly what `baseProps` is in your code, probably you don't need that here.
// What you need to do is find the corresponding component and simulate a click event.
wrapper.find(Select).simulate('click');
// And here, write the expected action which probably should be the same as it is in your case:
expect(wrapper.state('showRequired')).toBeFalsy();
});
});
Пожалуйста, в следующий раз предоставьте более точную информацию о кодах, структуреи актуальная проблема.Более того, отступ в примерах, который вы добавили выше, довольно плох, затрудняет понимание того, что на самом деле там происходит.