Для блоков тестов describe() необходима поддержка единых/полных названий, чтобы при прогоне теста была возможность быстро понять, отреагировать и разобраться в объекте тестирования. Алгоритм при формировании названия:

Вид теста - Unit, Integration

Бизнес назначение тестируемого блока - api, utility, ui и т.п. Тип тестируемого блока - function, class, jsx и т.п. Название по которому происходит импорт

// BAD
describe('Группа тестов cleanObjectKeys', () => {
  it('Должна вернуть', () => {})
})
 
// GOOD
describe('Unit/utility/function/cleanObjectKeys', () => {
  it('Должна вернуть', () => {})
})
Характеристикаdescribe()it()
НазначениеИспользуется для группировки связанных тестовых примеров вместе.Используется для определения индивидуального тестового примера.
СодержимоеМожет содержать несколько блоков it и другие блоки describe.Может содержать только одно тестовое утверждение.
ВложенностьМогут быть вложены друг в друга для создания иерархии наборов тестов.Не могут быть вложены друг в друга.
ХукиМогут иметь хуки (beforeAllafterAllbeforeEachafterEach).Не могут иметь хуков.
ИспользованиеОбычно используется для группировки тестов по функциональности или компоненту.Обычно используется для тестирования отдельного поведения или состояния.

Пояснение:

  1. describe():

    • Группировка тестов: Используется для объединения связанных тестовых сценариев в группы.
    • Вложенность: Может содержать другие блоки describe и it, что позволяет создавать иерархические структуры тестов.
    • Хуки: Может содержать хуки для настройки и завершения работы, такие как beforeAllafterAllbeforeEachafterEach.
    • Пример: Группировка тестов для функции sum.
  2. it():

    • Индивидуальный тест: Используется для определения отдельного тестового сценария с одним утверждением.
    • Одиночный блок: Не может содержать другие блоки describe или it.
    • Без хуков: Не может содержать хуки.
    • Пример: Тест для проверки, что sum(2, 2) возвращает 4.

Пример использования describe() и it():

describe('math operations', () => {
  describe('sum function', () => {
    it('adds 2 + 2 to equal 4', () => {
      expect(sum(2, 2)).toBe(4);
    });
 
    it('adds 0 + 0 to equal 0', () => {
      expect(sum(0, 0)).toBe(0);
    });
  });
 
  describe('subtraction function', () => {
    it('subtracts 2 - 2 to equal 0', () => {
      expect(subtract(2, 2)).toBe(0);
    });
 
    it('subtracts 0 - 0 to equal 0', () => {
      expect(subtract(0, 0)).toBe(0);
    });
  });
});

Назад