我想运行我的程序,然后运行测试以查看一切是否正确完成。我正在npm start
函数中运行before
命令,但是它不起作用。
我已经像这样检查并尝试过Async function in mocha before() is alway finished before it() spec?:
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
完成之前正在执行。
我也检查了
In mocha testing while calling asynchronous function how to avoid the timeout Error: timeout of 2000ms exceeded
现在我的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}`);
}
在我尝试过的所有事情中,mocha是要么不等待脚本完成,要么脚本完成,然后mocha抛出Error: Timeout of 30000ms exceeded.
如何正确执行?我希望这是我对诺言的误解。