Как протестировать событие 'paste' в общем c вводимом тексте с помощью библиотеки тестирования React - PullRequest
1 голос
/ 26 мая 2020

Я пытаюсь протестировать в «интеграции» функцию вставки с помощью библиотеки прямого тестирования. До сих пор мне удавалось инициировать событие 'paste' и видеть, что событие вставки передается в свойство onPaste моего поля ввода.

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


import { TextField } from '@material-ui/core';

it('should show an empty cell if value is incorrect', async () => {
  const { getByDisplayValue } = await render(
    <TextField
      value=""
      onPaste={event => {
        console.log(event.clipboardData.getData('text'));
      }}
      onChange={e => {
        console.log(e.currentTarget.value);
      }}
    />
  );

  const input = await getByDisplayValue('');

  const eventProperties = {
    clipboardData: {
      getData: jest.fn().mockReturnValueOnce('Foo Bar Test'),
    },
  };
  const pasteEvent = createEvent.paste(input, eventProperties);
  pasteEvent.clipboardData = eventProperties.clipboardData;

  fireEvent(input, pasteEvent);

  await waitFor(() => {
    getByDisplayValue('Foo Bar Test');
  });
});

В результате я получаю:

console.log MyComponent.test.js:110
    Foo Bar Test


TestingLibraryElementError: Unable to find an element with the display value: Foo Bar Test.

<body>
  <div>
    <div
      class="MuiFormControl-root MuiTextField-root"
    >
      <div
        class="MuiInputBase-root MuiInput-root MuiInput-underline MuiInputBase-formControl MuiInput-formControl"
      >
        <input
          aria-invalid="false"
          class="MuiInputBase-input MuiInput-input"
          type="text"
          value=""
        />
      </div>
    </div>
  </div>
</body>

Я ожидал бы, что опора value для TextField будет заполнена содержимым вставки событие, но, как видите, оно пустое. Кроме того, я ожидал, что сработает событие onChange, но это тоже не так (консольный журнал в тесте не отображается).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...