Как заставить асинхронную функцию JasmineDone правильно ожидать вызова функции внутри нее? - PullRequest
0 голосов
/ 10 января 2019

Я пишу собственный репортер для Jasmine, но не могу заставить мою функцию JasmineDone правильно ждать, пока вызов функции создаст несколько журналов в ней, чтобы завершиться правильно, прежде чем завершить. Это происходит в onPrepare.

Эта та же самая функциональность работает в наших функциях afterAll () в наших тестовых файлах, но не в разделе репортера jasmineDone.

Я использую Protractor с Jasmine для тестирования приложения Angular. Менеджер обещаний отключен в конфигурации, поэтому мы в основном используем async / awaits для обработки наших асинхронных операций.

global.globalFuncs = require('../src/functions/globalFunctions');

await jasmine.getEnv().addReporter(
  {
    jasmineStarted: function (options) {
    },
    specDone: function (result) {
    },
    suiteStarted: function (result) {
    },
    suiteDone: function (result) {
    },
    jasmineDone: async function (result) {

      if (suiteObj.totalFailed > 0) {
        console.log('+ Creating Logs');
        let logText = await globalFuncs.getLogText('performance');
        console.log(logText);
        console.log('- Logs Created');
        return 'success';
      } else {
        return 'no failures';
      }
    }
  }

файл глобальной функции

exports.getLogText = async (logType) => {
  return await browser.manage().logs().get(logType);
}

Я вижу сообщение «+ Создание журналов» в журнале консоли непосредственно перед завершением теста, но больше ничего не печатается.

консольный результат

...