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