Ожидание асинхронной функции для события бегуна мокко - PullRequest
1 голос
/ 12 марта 2019

Я ищу способ ожидания выполнения асинхронной функции в событии mocha runner. В качестве примера у меня есть собственный репортер мокко с одним событием:

    function MyReporter(runner) {
     Base.call(this, runner);
     runner.on('suite end', function(suite) {
      Testlogger.flush()
     });
    }
    mocha.utils.inherits(MyReporter, mocha.reporters.spec);

Testlogger.flush () - это функция с обратным вызовом или с обещанием (что-то с асинхронной логикой). В моем случае что-то вроде с обратным вызовом:

           fs.writeFile(where, what, (err) => {
            if(err) {
                callback("error")
            } else {
                callback("done")
            }
        });

или что-то с обещанием возврата:

            const test = promisify(fs.writeFile)
            return test.call(null, where, what)

или он может использовать нативный JS Promise

Итак, моя точка зрения, эта функция должна работать асинхронно, вероятно, форма этой "асинхронности" не важна. Я понимаю, что события работают синхронно, я пробовал много разных вариантов, но потерпел неудачу. Также я где-то читал о функции magic done () в mocha, но не нашел надежного примера. Конечно, нет проблем, если я использую функцию fs.writeFileSync ().

Как я могу заставить бегуна ждать мою асинхронную функцию для события?

...