Как проверить родительский метод, вызванный из дочернего компонента? - PullRequest
0 голосов
/ 13 апреля 2020

Я использую энзим и шутку и хочу проверить, что родительский метод вызывается при вызове дочерних реквизитов.

У меня есть что-то вроде этого

class Parent extends Component {

  method = () => {...}

  render() {

    <Child propMethod={method}/>
}
}

И в тесте I сделать что-то вроде этого

let shallow;

function setup() {
    const props = {
        mockMethod: jest.fn()
    };

    const enzymeWrapper = shallow(<Parent {...props}/>);

    return {
        props,
        enzymeWrapper
    };
}
    beforeAll(() => {
        shallow = createShallow({ dive: true });
    });

describe('components', () => {
    describe('Child', () => {
        it('should call method', () => {
            const { enzymeWrapper, props } = setup()
            const component = enzymeWrapper.find(Child)
            component.prop('propMethod')();
            expect(props.mockMethod).toHaveBeenCalledTimes(1);

        })
    });
});

Но я получаю

Expected number of calls: 1
Received number of calls: 0

Структура теста из документации Redux

здесь

1 Ответ

0 голосов
/ 13 апреля 2020

Ваш издевательский метод не подходит для детской опоры. Из комментариев вы, вероятно, захотите проверить, что при вызове метода он имеет какой-то значимый побочный эффект. Если в конечном итоге оно отправляет избыточное действие, проверьте, отправлено ли действие при вызове дочернего метода.

В любом случае вам придется сделать что-то подобное, если вы намерены дать вашему нынешнему тесту какие-либо реальные ограничения на поведение компонента, поэтому непосредственное тестирование является более простым и значимым.

...