Элегантный способ провалить асинхронный тест мокко вне описания - PullRequest
0 голосов
/ 18 марта 2019

У меня есть асинхронный код перед тестами: инициирование соединения с базой данных и т. Д., Которые я НЕ хочу переместить внутрь каждого теста. Для этого я должен установить --delay param в mocha.opts и запустить функцию run(), когда тест будет готов к запуску. Ну, в настоящее время это выглядит так:

async myTest() {
  await prepare1();
  await prepare2();
  describe('1', async () => {
     it('11', async () => {
        await something();
     });
  });
  run();
}

myTest();

Как мне пройти тест с мокко, когда оператор prepare2() не выполнен?

Мои попытки:

0) Просто выполнение функции дает UnhandledPromiseRejectionWarning:

myTest(); 

1) тест не запускается вообще и существует с 0;

it('init', async () => {
    await myTest();
});

2) это говорит UnhandledPromiseRejectionWarning:

myTest().catch(e => {throw e});

3) с chai-as-promised: AssertionError: Promise should be fulfilled, UnhandledPromiseRejectionWarning:

assert.isFulfilled(myTest(), "Promise should be fulfilled");

4) Единственное, что приходит на ум, это ниже. Кажется, это не очень хорошо смотрится с чай:

myTest().catch(e => {
    console.error(e);
    process.exit(1);
});
...