Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在JEST测试中隐藏控制台日志_Javascript_Node.js_Testing_Jestjs - Fatal编程技术网

Javascript 在JEST测试中隐藏控制台日志

Javascript 在JEST测试中隐藏控制台日志,javascript,node.js,testing,jestjs,Javascript,Node.js,Testing,Jestjs,一般来说,我不太会开玩笑,也不太会测试,但我很难弄明白以下几点。 我有以下脚本,它是CLI工具的一部分 我想在测试时停止微调器输出 我试过间谍/模拟,但没用 const ora = require('ora'); const spinner = new ora(); const chalk = require('chalk'); const fs = require('fs'); module.exports = path => new Promise((resolve, rejec

一般来说,我不太会开玩笑,也不太会测试,但我很难弄明白以下几点。 我有以下脚本,它是CLI工具的一部分

我想在测试时停止微调器输出

我试过间谍/模拟,但没用

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();
  });
});

您应该能够添加

jest.mock('ora')
在你考试的开始。它将自动模拟整个库,并使用
jest.fn()
(无任何实现)替换每个方法,因此来自实现的调用不会对输出产生影响

本编辑:

功能模拟结果如下:

jest.mock('ora',()=>{
返回jest.fn().mockImplementation(()=>{
返回{
开始:()=>{},
失败:()=>{},
成功:()=>{}
};
});
});

谢谢,即将标记正确的回复,尽管它似乎没有自动模拟其方法。这可能是因为在我的代码中使用了ora实例吗?不管怎样,你给我指出了正确的方向,我模仿了我正在使用的方法。@BenS我很好奇为什么它不起作用,因为库实际上导出的是一个而不是一个类