Скрыть журналы консоли в тесте JEST - PullRequest
1 голос
/ 06 апреля 2020

Я новичок в JEST и тестировании в целом, и мне трудно понять следующее. У меня есть следующий скрипт, который является частью инструмента CLI.

Я хотел бы остановить выходы счетчика при тестировании.

Я пробовал spyOn / mock, но безрезультатно.

const ora = require('ora');
const spinner = new ora();
const chalk = require('chalk');
const fs = require('fs');

module.exports = path =>
  new Promise((resolve, reject) => {
    spinner.text = chalk.blue('Creating directory...');
    spinner.start();
    fs.mkdir(path, err => {
      if (!err) {
        spinner.succeed(chalk.bgGreen('Directory created\n'));
        resolve(true);
      } else {
        spinner.fail(chalk.bgRed(`Directory already exists: ${path}`));
        reject(err);
      }
    });
  });

это мой тест:

const createDir = require('./utils/createDir');
const fs = require('fs');

describe('createDir function', () => {
  const folders = {
    base: './.test',
    fail: './.test/fail',
    success: './.test/success'
  };

  beforeAll(() => {
    fs.mkdirSync(folders.fail, { recursive: true });
  });

  afterAll(() => {
    fs.rmdirSync(folders.base, { recursive: true });
  });

  it('creates the directory', async () => {
    await expect(createDir(folders.success)).resolves.toBe(true);
  });

  it('fails if directory exists', async () => {
    await expect(createDir(folders.fail)).rejects.toThrow();
  });
});

1 Ответ

1 голос
/ 06 апреля 2020

Вы должны просто добавить

jest.mock('ora')

в начале теста. Он автоматически смоделирует всю библиотеку, заменив каждый из методов на jest.fn() (без какой-либо реализации), поэтому вызовы от реализации не будут влиять на вывод.

EDIT от Ben:

Функциональный макет оказался таким:

jest.mock('ora', () => {
  return jest.fn().mockImplementation(() => {
    return {
      start: () => {},
      fail: () => {},
      succeed: () => {}
    };
  });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...