Удалите персонажа сзади с помощью fireEvent `Backspace`

Я пытаюсь удалить персонажа сзади, используя Backspace событие, но это не сработало, как ожидалось.

Это не позволит мне удалить персонажа сзади с помощью клавиши `Backspace.

input.focus()
const options = {
    key: 'Backspace',
    keyCode: 8,
    which: 8,
}
fireEvent.keyDown(input, options)
fireEvent.keyUp(input, options)

Воспроизведение: https://codesandbox.io/s/testing-library-delete-1-character-i4y3d?file=/src/input.test.js:507-753

1 ответ

Решение

Я могу решить эту проблему, добавив эту функцию.

function backspace(element) {
  let actuallyTyped = element.value;

  const backspaceKey = {
    key: 'Backspace',
    code: 8,
    inputType: 'deleteContentBackward',
  };

  const sharedEventConfig = {
    key: backspaceKey.key,
    charCode: backspaceKey.code,
    keyCode: backspaceKey.code,
    which: backspaceKey.code,
    modifier: backspaceKey.modifier,
  };
  const downEvent = fireEvent.keyDown(element, sharedEventConfig);

  if (downEvent) {
    actuallyTyped = actuallyTyped.slice(0, -1);

    fireEvent.input(element, {
      target: { value: actuallyTyped },
      inputType: backspaceKey.inputType,
      bubbles: true,
      cancelable: true,
    });
  }

  fireEvent.keyUp(element, sharedEventConfig);
}

А потом вызываю это в моем тестовом задании.

  // delete up 5 times
  let count = 5;
  do {
    backspace(input);
  } while (count--);
Другие вопросы по тегам