Удалите персонажа сзади с помощью fireEvent `Backspace` - PullRequest
1 голос
/ 28 мая 2020

Я пытаюсь удалить персонажа сзади, используя событие 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 Ответ

0 голосов
/ 30 мая 2020

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

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--);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...