Для блоков тестов 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);
    });
  });
});

Назад