Тестирование useEffect unmount callback, вызываемого с использованием актов в ферменте - PullRequest
2 голосов
/ 17 июня 2019

У меня есть компонент с такой настройкой

const ChestWithToys = ({toyBoxId, handleTidyToys})=> {
    /* do stuff with toys */
    useEffect(() => () => handleTidyToys(), [toyBoxId])
}

И это в моем тесте с энзимом и действием (от react-dom/test-utils)

it('tidies toys on unmount', () => {
    let handleTidyToys = sinon.stub();
    let wrapper = shallow(<ChestWithToys toyBoxId={1} handleTidyToys={handleTidyToys} />);
    expect(handleTidyToys).to.have.callCount(0);
    act(() => {
       wrapper.unmount();
    });
    expect(handleTidyToys).to.have.callCount(1);
});

Компонент работает как положено. Однако в тесте handleTidyToys никогда не вызывается. Что дает? Я не могу найти лучший пример , где происходит размонтирование, но из того, что я вижу, должно сработать мой обратный вызов очистки.

Если я заменим размонтирование на setProps и изменим идентификатор запроса, он все равно не сработает.

Является ли фермент несовместимым или я совершил какую-то другую ошибку?

edit: я только что сбросил загрузку console.logs в useEffect и вокруг него, и он вообще не работает.

...