подавить тривиальные консольные выводы в тесте по йомену - PullRequest
0 голосов
/ 20 марта 2020

есть сообщество, у меня есть некоторые проблемы при тестировании генератора, который я пишу. в генераторе я использую ora для получения значимых выводов консоли. код приведен ниже.

let spinner = ora().start("\nprepairing git repository");
this.spawnCommand("git", ["init", "--quiet"], {
   stdio: 'inherit'
});
spinner.succeed("git repository initialized");

при тестировании генератора, при некоторых тестах, он выдает выходные данные для ora. Мой вопрос заключается в том, есть ли способ подавить выходы консоли, чтобы выходы не возникали в тесте. Вот код в тесте

test.beforeEach(t => {
  let sora = sinon.stub(ora().__proto__, "start")
    .withArgs("")
    .returns({
      "succeed": sinon.stub().withArgs(""),
      "start": sinon.stub().withArgs("")
    });
  t.log(sora.called);
});

Я также попытался ввести код заглушки, нажав NodeJS native require api.

test.beforeEach(t => {
  delete require.cache[require.resolve("ora")];
  let sora = sinon.stub()
    .withArgs("")
    .returns({
      "succeed": sinon.stub().withArgs(""),
      "start": sinon.stub().withArgs("")
    });
  require.cache[require.resolve("ora")] = {
    exports: sora
  }
  t.log(sora.called);

вместо использования фиктивной библиотеки require, такой как proxyquire, есть ли способ подавить вывод консоли или каков лучший способ заглушить код, когда мы не Контролировать экспорт?

...