Фермент / Jest статический метод макет не работает - PullRequest
1 голос
/ 09 июля 2019

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

const NextButton = (props: ISubmitButtonProps) => (
    <button
        onClick={Service.goToNext}
        className="col-2 submit"
        type="submit"
        disabled={props.submitting}>
        Next
    </button>
);

export default NextButton;

Теперь я хочу проверить, действительно ли выполняется метод goToNext. Для этого я использовал пример из здесь и добавил макет, который выглядит прекрасно, например:

const goToNextMock = jest.fn();
jest.mock('Services/service', () => ({
        default: class {
            public static goToNext() {
                goToNextMock(); //the jest.fn from above
            }
        }
    })
);

А потом написал тест для него, просто имитируя событие нажатия, а затем проверяя, был ли запущен jest.fn():

it('should call goToNext on button click', () => {
        //button is set before as shallow(<NextButton submitting={false}/>);
        button.simulate('click');
        expect(goToNext).toHaveBeenCalled();
    })

Проблема в том, что причины неизвестны, тест не сохраняется. Дает мне

Ожидаемая фиктивная функция была вызвана.

РЕДАКТИРОВАТЬ: Тот же результат будет происходить при попытке издеваться над этим способом (обратите внимание на дополнительные preventDefault()

it('should call goToNextReport on button click', () => {
    const mock = jest.fn();
    Service.goToNext = mock.bind(Service);

    button.simulate('click', { preventDefault() {} });

    expect(mock).toHaveBeenCalled();
})

Я довольно плохо знаком с JEST и JS-тестированием. Кажется, макет был сделан правильно, но я все еще не могу проверить метод.

Есть идеи на эту тему? Вся помощь будет потрясающей! РЕДАКТИРОВАТЬ: проблема была также передана на канал GEST GESTUB: https://github.com/facebook/jest/issues/8695

1 Ответ

1 голос
/ 18 июля 2019

Попробуйте это:

jest.mock('Services/service', () => ({
    goToNext: jest.fn()
}));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...