Фермент: как проверить ключ?
У меня есть приложение 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});
Может быть, это помогает.