Я ищу способ ожидания выполнения асинхронной функции в событии 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 ().
Как я могу заставить бегуна ждать мою асинхронную функцию для события?