В Jasmine для организации тестов используются функции
describe и it. Когда проект содержит множество
тестов, часто возникает необходимость запустить только один
конкретный тест, чтобы сосредоточиться на его проверке и
ускорить процесс разработки. Для этой цели применяется функция
fit.
fitФункция fit (focused it) позволяет
выделить один тест и запускать исключительно его,
игнорируя остальные тесты в текущем файле:
describe('Математические операции', () => {
it('должен корректно складывать числа', () => {
expect(1 + 1).toBe(2);
});
fit('должен корректно вычитать числа', () => {
expect(5 - 3).toBe(2);
});
it('должен корректно умножать числа', () => {
expect(3 * 4).toBe(12);
});
});
В этом примере только тест с fit будет
выполнен, остальные it проигнорированы. Jasmine
выводит предупреждение о том, что существуют “focused tests”, чтобы
напомнить о временном выделении.
fdescribeДля акцентирования целой группы тестов используется
fdescribe, который действует аналогично fit,
но на уровне блоков:
fdescribe('Операции с числами', () => {
it('сложение', () => {
expect(2 + 2).toBe(4);
});
it('вычитание', () => {
expect(5 - 2).toBe(3);
});
});
При наличии fdescribe выполняются только тесты
внутри этого блока, а все другие describe
игнорируются. Если одновременно присутствуют fit внутри
fdescribe, Jasmine будет запускать только
fit, так как они имеют более высокий
приоритет.
fitfit
в коде может привести к запуску лишь одного теста на сборке, что создаёт
ложное ощущение успешности.fdescribe, и fit, выполняются только
fit из всех блоков.fit работает
только в пределах текущего describe. Тесты вне блока будут
игнорироваться, даже если они тоже обычные it.Можно комбинировать fit с асинхронными тестами для
проверки промисов или таймаутов:
fit('должен вернуть данные с сервера', async () => {
const data = await fetchData();
expect(data).toHaveProperty('id');
expect(data.status).toBe('ok');
});
Также fit можно использовать совместно с
beforeEach и afterEach, что позволяет локально
настраивать подготовку и очистку окружения для отдельного теста:
describe('API-тесты', () => {
beforeEach(() => {
setupMockServer();
});
afterEach(() => {
teardownMockServer();
});
fit('проверка получения пользователя', () => {
const user = getUser(1);
expect(user.name).toBe('Alice');
});
});
В этом случае beforeEach и
afterEach выполняются только для fit,
обеспечивая корректное окружение для отдельного теста.
fit исключительно в процессе разработки и
отладки.fdescribe, если нужно протестировать сразу несколько
сценариев.fit
позволяет сосредоточиться на конкретной функции, не дожидаясь завершения
всех тестов.fit — инструмент локальной фокусировки тестов, который
существенно ускоряет процесс разработки, повышает точность отладки и
позволяет работать эффективно даже с большими тестовыми наборами.