Фермент: как проверить ключ?

У меня есть приложение React, которое реагирует на нажатие клавиши Escape. Это код в приложении:

componentDidMount(){
        document.addEventListener("keydown", this.escFunction.bind(this), false);
    }

В тестовом коде я пишу следующее утверждение:

wrapper.find('document').simulate('keyDown', {keyCode: 27});

Я получил ошибку:

Method “simulate” is only meant to be run on a single node. 0 found instead.

Я также попробовал:

wrapper.simulate('keyDown', {keyCode: 27});

и кажется, что приложение не реагирует на нажатие Escape.

1 ответ

Вы получаете эту ошибку. Метод "имитация" предназначен для запуска только на одном узле. 0 найдено вместо. означает, что контейнер не найден.

Вы должны сначала проверить это, чтобы убедиться, что вы получаете узел:

const container = wrapper.find(".class_name");
expect(container.length).to.equal(1);

или это может быть асинхронная загрузка, поэтому вы не получаете узел. Затем вы должны попробовать использовать функцию setTimeout, чтобы получить узел.

Внутри функции setTimeout вызовите это:

container.simulate('keydown', {key: 'Escape', keyCode: 27, which: 27});

Может быть, это помогает.

Другие вопросы по тегам