Проверить наличие элемента в Jest / RTL только один раз - PullRequest
0 голосов
/ 31 марта 2020

Я тестирую компонент, с помощью которого вы можете добавлять подкомпоненты, нажимая на значок «+».

Визуализированный HTML находится где-то в строках:

<div>
  <div>
    <div>
      From <input type="text" />
    </div>
    <div>
      To <input type="text" />
    </div>
    <div>+</div>
  </div>
</div>

Итак, в начальном тесте я проверяю наличие текста:

// test setup

test('From and to occur only once', () => {
  const { getByText } = setup();

  expect(getByText('From')).toBeInTheDocument();
  expect(getByText('To')).toBeInTheDocument();
});

Все это прекрасно работает. Но я хочу убедиться, что изначально контент показывается только один раз .

Так что мой следующий тест будет выглядеть примерно так:

// test setup

test('When add button is clicked there From and To exist two times', () => {
  const { getByText } = setup();
  const addButton = getByText("+")

  // first row
  expect(getByText('From')).toBeInTheDocument();
  expect(getByText('To')).toBeInTheDocument();

  fireEvent.click(addButton);

  // second row
  expect(getByText('From')).toBeInTheDocument();
  expect(getByText('To')).toBeInTheDocument();
});

Как бы я сделать различие между первым и вторым разом, когда элементы встречаются?

1 Ответ

0 голосов
/ 31 марта 2020

Рассмотрите возможность использования getAllBy (после щелчка) вместо getBy. Это может привести к массиву всех найденных элементов, и вы можете ожидать (), что общая длина будет 2.

...