Реактивный тест не может найти элемент, издевающийся над шуткой - PullRequest
1 голос
/ 09 апреля 2020

Я пытаюсь смоделировать компонент реагировать на выбор для использования его в тестовом событии. Ниже мой выбор реакции, который я создал, используя шутку.

jest.mock("react-select", () => ({ options, onChange }) => {
  function handleChange(event) {
    const option = [];
    option.push(options.find(option => option === event.currentTarget.value));
    onChange(option);
    console.log(option);............................................................//line 1
  }
  return (
    <select
      data-testid="test-select"
      name="users"
      label="users"
      options={[
        "a",
        "b",
        "c",
        "d",
        "e"
      ]}
      onChange={handleChange}
    >
      {options.map(value => (
        <option key={value} value={value}>
          {value}
        </option>
      ))}
    </select>
  );
});

Проблема в том, что консоль на line 1 печатает undefined в консоли. Ниже приведен макет события пожара для моего теста:

const chooseInput = getByTestId("test-select");
    fireEvent.change(chooseInput, {
      target: {
        value: "b"
      }
    });

Тест не пройден как:

expect(received).toBeInTheDocument()

    received value must be an HTMLElement or an SVGElement.
    Received has value: null

Почему опция не обновляется в начале события пожара?

1 Ответ

0 голосов
/ 12 апреля 2020

Структура для фиктивного экспорта по умолчанию из библиотеки:

jest.mock("react-select", () => {
  return {
    __esModule: true,
    default: ({ options, onChange }) => {
      // Your mock implementation goes here
    },
  };
})

Важно __esModule: true

Основная функция должна возвращать объект со свойством default, которое представляет вашу смоделированную реализацию

Таким образом, полный код должен быть

jest.mock("react-select", () => {
  return {
    __esModule: true,
    default: ({
      options,
      onChange
    }) => {
      function handleChange(event) {
        const option = [];
        option.push(options.find(option => option === event.currentTarget.value));
        onChange(option);
        console.log(option);
      }
      return ( <
        select data - testid = "test-select"
        name = "users"
        label = "users"
        options = {
          [
            "a",
            "b",
            "c",
            "d",
            "e"
          ]
        }
        onChange = {
          handleChange
        } > {
          options.map(value => ( <
            option key = {
              value
            }
            value = {
              value
            } > {
              value
            } <
            /option>
          ))
        } <
        /select>
      );
    },
  };
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...