Npm установить внутрь before () не дожидаясь завершения кода - PullRequest
0 голосов
/ 27 мая 2019

Я хочу запустить мою программу, а затем запустить тесты, чтобы увидеть, все ли было сделано правильно. Я запускаю команду 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.

Как мне сделать это правильно? Я ожидаю, что это мое неправильное понимание Обетований.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...