Я хочу запустить мою программу, а затем запустить тесты, чтобы увидеть, все ли было сделано правильно. Я запускаю команду npm start
внутри функции before
, но она не работает.
Я проверил и попробовал Асинхронная функция в mocha перед () всегда завершается до его () спецификации? как таковая:
return new Promise((resolve) => {
execa('npm start')
process.chdir('../Project')
console.log(process.cwd());
resolve()
});
и
return new Promise((resolve, reject) => {
execa('npm start')
.then(function() {
process.chdir('../Project')
console.log(process.cwd());
resolve()
})
.catch(function(err) {
console.log('Error')
return reject(new Error(err))
})
});
Однако console.log
выполняется до завершения npm start
.
Я также проверил
В тесте mocha при вызове асинхронной функции как избежать тайм-аута Ошибка: превышен тайм-аут 2000 мс
и в данный момент в моем package.json
файле запускается тест: "test": "mocha --timeout 30000"
. Это не помогает.
Мой код:
npm start
выполняет следующий код:
try {
process.chdir('../')
var packages = ['webpack']
var args = ['install', '--save', '--save-exact']
let exec = args.concat(packages, ['--verbose'])
new Promise(function(resolve, reject) {
execa('npm', exec)
.then(function() {
console.log(`Current directory: ${process.cwd()}`);
console.log(`Execa instaled: `, exec);
return execa('npm', ['install'])
})
.then(function() {
console.log('Success. Installed packages in', dir);
resolve()
})
.catch(function() {
console.log('Error')
return reject(new Error('npm installation failed'))
})
})
} catch (err) {
console.error(`chdir: ${err}`);
}
Из всего, что я пробовал, мокко либо не дожидается завершения сценария, либо сценария завершается, а затем выбрасывает мокко Error: Timeout of 30000ms exceeded.
Как мне сделать это правильно? Я ожидаю, что это мое неправильное понимание Обетований.