Как сделать цепочку тестов в jest

Рейтинг: 0Ответов: 1Опубликовано: 29.07.2023

Я хочу протестировать компонент введите сюда описание изображения введите сюда описание изображения

Я хочу пройти все этапы

  1. Клик на кнопку "Добавить в корзину" (отобразиться "-" "1" "+")
  2. Клик на "+" (значение смениться с 1 на 2)
  3. Клик на "-" (значение смениться с 2 на 1)
  4. Клик на "-" (Кнопка примет дефолтное состояние)

Можно было бы написать одну большую конструкцию 'test' и тестить всё там. Но я бы хотел разделить логику каждого пункта в отдельный тест чтобы можно было добавить описание. Но в таком случае каждому следующему тесту нужен будет результат предидущего. По итогу получается что или делаешь всё в куче или делаешь большую копипасту. Хотелось бы найти самый лаконичный вариант

Ответы

▲ 0Принят

Для тестирования последовательности взаимосвязанных действий удобно использовать паттерн AAA (Arrange-Act-Assert). Например:

let cart;

beforeEach(() => {
  cart = createCart();
});

test('добавляет товар в корзину', () => {
  cart.addToCart('apple');
  
  expect(cart.getItems().length).toBe(1);
});

test('увеличивает кол-во товара', () => {
  cart.addToCart('apple');
  cart.increment('apple');
  
  expect(cart.get('apple')).toBe(2); 
});

test('уменьшает кол-во товара', () => {
  cart.addToCart('apple');
  cart.increment('apple');
  cart.decrement('apple');

  expect(cart.get('apple')).toBe(1);
});

test('убирает товар при кол-ве 0', () => {
  cart.addToCart('apple');
  cart.decrement('apple');

  expect(cart.get('apple')).toBeUndefined();
});