Jest-тесты могут выполняться асинхронно, но они определяются синхронно. beforeAll
выполняется только при запуске тестов, тест должен быть известен в это время.
Это может быть либо отдельный тест, который динамически создает утверждения:
let d: any;
beforeAll(async () => {
connectToDatabase();
d = await r.retriveDataFromDb1();
}, 200000);
describe('Test suite 1', () => {
it('test case', () => {
d.forEach((v: any) => {
expect(some).toBe(valueThatDependsOnV);
});
}, 20000);
});
, либо асинхронная установка должно происходить в глобальной настройке , где это разрешено:
// setup.js
module.exports = async () => {
connectToDatabase();
global.__d__ = await r.retriveDataFromDb1();
};
// teardown.js
module.exports = async function () {
// disconnect from database
};
__d__
станет доступным во всех тестах:
describe('Test suite 1', () => {
__d__.forEach((v: any) => {
it('test case', async () => {
...
}, 20000);
});
});