Есть ли в Jest параметр, или есть правило Lint или способ гарантировать, что в каждом тесте Jest есть хотя бы один expect() вызов?

Один из способов обеспечить это - использовать expect.assertions() в каждом тесте. Это требует, чтобы я не забывал добавлять это к каждому тесту.

Я ищу решение для инструментов здесь.

4
Guy 15 Авг 2019 в 21:10

2 ответа

Лучший ответ

Вы можете достичь желаемого, установив установочный файл, который определяет ловушку beforeEach для всех ваших тестов.

Это можно сделать, указав файл с помощью setupFilesAfterEnv jest вариант конфигурации.

Кроме того, вы можете использовать hasAssertions, чтобы проверить, Тест имеет по крайней мере одно утверждение.

Принимая все это во внимание, вы можете получить файл конфигурации jest, например:

setupFilesAfterEnv: [
    '<rootDir>tests/support/check-assertions-number.js',
],

И в файле check-assertions-number.js:

beforeEach(() => {
    expect.hasAssertions();
});
3
mgarcia 16 Авг 2019 в 13:54

Один из способов убедиться в этом состоит в том, чтобы в каждом тесте использовалась функция allow.assertions (). Это требует, чтобы я не забывал добавлять это к каждому тесту.

Я не специалист по шуткам, но можно ли это сделать в разборочной части тестов? Вам все равно придется определять его для каждого модуля, но это минимизирует дублирование по сравнению с каждым тестом.

РЕДАКТИРОВАТЬ: Исходя из перспективы мокко, можно настроить глобальные обработчики разрыва через afterEach вне блока describe, что может быть возможно в jest, так что вам даже не нужно определять его в на уровне модуля.

1
jakemingolla 15 Авг 2019 в 18:17