При использовании функции для генерации describe
/ it
блоков, которые часто используются в тестовом файле, блоки beforeAll
или beforeEach
, которые существуют в родительском describe
, игнорируются.
Например:
const repeatedTests = (num) => {
// DOES NOT WORK - num is undefined
describe(`Testing number ${num}`, () => {
it('should exist', () => {
expect(num).toBeDefined();
});
it('should be a number', () => {
expect(num).not.toBeNaN();
});
it('should be less than 5', () => {
expect(num).toBeLessThan(5);
});
});
};
describe.each([[1],[2],[3]])('Describe for %i', (num) => {
let numForTesting;
beforeAll(() => {
numForTesting = num;
});
repeatedTests(numForTesting);
});
Я понимаю, почему это так - repeatedTests
запустится немедленно, так как это не describe
/ it
, что бегун тестаследя за.
Чтобы заставить это работать, мне нужно сделать что-то вроде этого:
const repeatedTests = (num) => {
describe(`Testing number ${num}`, () => {
let numForTesting;
beforeAll(() => {
numForTesting = num;
});
it('should exist', () => {
expect(numForTesting).toBeDefined();
});
it('should be a number', () => {
expect(numForTesting).not.toBeNaN();
});
it('should be less than 5', () => {
expect(numForTesting).toBeLessThan(5);
});
});
};
describe.each([[1],[2],[3]])('Describe for %i', (num) => {
repeatedTests(num);
});
В конкретном наборе тестов, над которым я работаю (который гораздо сложнее, чем этот(в случае, если это не очевидно) - выполнение таких действий усложняет задачу и делает повторное использование функции генератора действительно сложной задачей.
Есть ли способ запустить beforeAll
или beforeEach
перед блоком тестирования, сгенерированным внутри функции, как в моем первоначальном примере?
Для чего бы то ни было, эквивалент установки num
в моем простом примере выше mount
с использованием узла реакции с использованием enzyme
.