Для блоков тестов describe() необходима поддержка единых/полных названий, чтобы при прогоне теста была возможность быстро понять, отреагировать и разобраться в объекте тестирования. Алгоритм при формировании названия:
Вид теста - Unit, Integration
Бизнес назначение тестируемого блока - api, utility, ui и т.п. Тип тестируемого блока - function, class, jsx и т.п. Название по которому происходит импорт
// BAD
describe('Группа тестов cleanObjectKeys', () => {
it('Должна вернуть', () => {})
})
// GOOD
describe('Unit/utility/function/cleanObjectKeys', () => {
it('Должна вернуть', () => {})
})| Характеристика | describe() | it() |
|---|---|---|
| Назначение | Используется для группировки связанных тестовых примеров вместе. | Используется для определения индивидуального тестового примера. |
| Содержимое | Может содержать несколько блоков it и другие блоки describe. | Может содержать только одно тестовое утверждение. |
| Вложенность | Могут быть вложены друг в друга для создания иерархии наборов тестов. | Не могут быть вложены друг в друга. |
| Хуки | Могут иметь хуки (beforeAll, afterAll, beforeEach, afterEach). | Не могут иметь хуков. |
| Использование | Обычно используется для группировки тестов по функциональности или компоненту. | Обычно используется для тестирования отдельного поведения или состояния. |
Пояснение:
-
describe():- Группировка тестов: Используется для объединения связанных тестовых сценариев в группы.
- Вложенность: Может содержать другие блоки
describeиit, что позволяет создавать иерархические структуры тестов. - Хуки: Может содержать хуки для настройки и завершения работы, такие как
beforeAll,afterAll,beforeEach,afterEach. - Пример: Группировка тестов для функции
sum.
-
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);
});
});
});