Функция describe является основой организации тестов в
Jasmine и используется для группировки связанных спецификаций. Она
позволяет логически объединять наборы тестов, создавая читаемую
структуру и упрощая поддержку большого количества тестов.
describe(description, specDefinitions);
it) или вложенные группы
(describe).Пример базового использования:
describe('Массивы', function() {
it('должен содержать элемент после добавления', function() {
const arr = [];
arr.push(1);
expect(arr).toContain(1);
});
});
describeJasmine поддерживает вложенные describe, что позволяет
создавать иерархию тестов. Это особенно полезно при тестировании сложных
объектов или модулей с множеством функций.
describe('Строки', function() {
describe('Метод toUpperCase', function() {
it('должен преобразовывать все буквы в верхний регистр', function() {
expect('abc'.toUpperCase()).toBe('ABC');
});
});
describe('Метод includes', function() {
it('должен возвращать true, если подстрока присутствует', function() {
expect('hello world'.includes('world')).toBe(true);
});
});
});
Ключевой момент: вложенные describe не
создают отдельный контекст выполнения, они лишь структурируют вывод
тестов и объединяют наборы спецификаций.
beforeEach и afterEach внутри
describedescribe позволяет локально определять хуки
beforeEach и afterEach, которые выполняются
перед и после каждого теста внутри данной группы.
describe('Объекты', function() {
let obj;
beforeEach(function() {
obj = { a: 1, b: 2 };
});
it('должен содержать ключ a', function() {
expect(obj.a).toBe(1);
});
it('должен содержать ключ b', function() {
expect(obj.b).toBe(2);
});
afterEach(function() {
obj = null;
});
});
Особенность: вложенные beforeEach и
afterEach выполняются в порядке иерархии сверху вниз. Это
позволяет создавать общие условия для группы тестов и при необходимости
добавлять дополнительные действия для более узких контекстов.
description должны четко отражать тестируемую
функциональность.beforeEach и afterEach внутри
describe снижает дублирование кода и повышает
читаемость.describe от
itdescribe — создаёт контейнер для набора тестов, не
выполняет проверок самостоятельно.it — выполняет конкретную проверку и содержит
утверждения (expect).Пример интеграции:
describe('Калькулятор', function() {
describe('Метод сложения', function() {
it('должен возвращать сумму двух чисел', function() {
const result = 2 + 3;
expect(result).toBe(5);
});
});
describe('Метод вычитания', function() {
it('должен возвращать разницу двух чисел', function() {
const result = 5 - 3;
expect(result).toBe(2);
});
});
});
describe формирует читабельный иерархический вывод в
консоли, где каждая группа и подгруппа отображается с отступами. Это
позволяет быстро идентифицировать успешные и проваленные тесты, особенно
при большом объеме спецификаций.