【问题标题】:Node - change colors on the output when testing with mocha节点 - 使用 mocha 测试时更改输出颜色
【发布时间】:2018-12-11 05:28:26
【问题描述】:

我有一个gulp 任务负责使用mocha 运行测试用例。

gulp.task('test', ['cls'], () => {
    execout('mocha -r ts-node/register --timeout 999999 --colors test/*.test.ts');
});

我的问题是,如您所见,有一些很难看到的灰线:

我的问题是,我怎样才能改变这种颜色?

我成功尝试了这里推荐的方法(有效):
https://github.com/mochajs/mocha/issues/802#issuecomment-18254298):

$ gulp test > >(perl -pe 's/\x1b\[90m/\x1b[92m/g') 2> >(perl -pe 's/\x1b\[90m/\x1b[92m/g' 1>&2)

但我不喜欢这样,因为我不想每次想运行该命令时都在命令行上写下所有内容。

然后我尝试将所有内容移到 gulp 任务中,如下所示:

gulp.task('test', ['cls'], () => {
    execout("mocha -r ts-node/register --timeout 999999 --colors test/*.test.ts > >(perl -pe 's/\x1b\[90m/\x1b[92m/g') 2> >(perl -pe 's/\x1b\[90m/\x1b[92m/g' 1>&2)");
});

然后我在终端上收到以下错误。

ERR: > was unexpected at this time.

另一方面,这里还有另一种建议/方法,但我不知道如何使用它:

https://github.com/mochajs/mocha/issues/1200#issuecomment-62780003

你知道如何修改那条难以阅读的灰线的颜色吗?

谢谢!

【问题讨论】:

    标签: javascript node.js typescript mocha.js chai


    【解决方案1】:

    只需手动更改 base.js 中的颜色即可。

    转到:您的项目 root\node_modules\mocha\lib\reporters\base.js 并玩弄数字..

     exports.colors = {
      pass: 32, //with value 32 your gray "pass" lines become green
      fail: 31,
      'bright pass': 92,
      'bright fail': 91,
      'bright yellow': 93,
      pending: 36,
      suite: 0,
      'error title': 0,
      'error message': 31,
      'error stack': 90,
      checkmark: 32,
      fast: 90,
      medium: 33,
      slow: 31,
      green: 32,
      light: 90,
      'diff gutter': 90,
      'diff added': 32,
      'diff removed': 31
    }; 
    

    或者在您的项目根目录中创建 spec-helper.js 文件。
    然后将--require spec-helper.js 放入Mocha 的shell 命令中。 (见下面的cmets)

    // spec-helper.js
    var colors = require('mocha/lib/reporters/base').colors;
        colors['pass'] = 32;
    

    2020 年更新:

    由于不推荐使用 mochaopts 文件并引入了配置文件,因此您不再需要帮助文件。而更改 mocha 源代码是你能做的最糟糕的事情。

    现在您可以使用 javascript 格式的配置文件并根据需要重新定义报告器的颜色。

    当您在运行时动态地重新定义对象的属性时,这就是所谓的“猴子修补”。 - 最初加载 mocha 时,它使用配置文件。在该文件中,您导入 'mocha/lib/reporters/base' 模块并覆盖颜色或符号。使用该基本文件作为参考。这些更改只会在运行时存在,实际的源代码将保持不变。

    .mocharc.js文件放在根目录下。

    //.mocharc.js
    const {colors, symbols} = require('mocha/lib/reporters/base');
    colors.pass = 32;
    symbols.ok = '?';
    
    // example config from Mocha repo       
    module.exports = {
        diff: true,
        extension: ['js'],
        package: './package.json',
        reporter: 'spec',
        slow: 75,
        timeout: 2000,
        ui: 'bdd',
        'watch-files': ['lib/**/*.js','test/**/*.js'],
        'watch-ignore': ['lib/vendor']
      };
    

    看看它的外观。

    我在这里使用 Windows 终端和 WSL。表情符号可能无法在本机 Windows 控制台中使用,但在 Linux 或 Mac 上应该可以使用。

    【讨论】:

    • 在调用mocha 命令时有什么办法吗?只是在重新安装node_modules 的那一刻思考:$ npm i
    • 我该如何使用它?,有什么参考吗?
    • С在项目的根目录中创建一个新文件 - 这是 package.json 文件所在的主文件夹,将此文件命名为 spec-helper.js ,从答案中复制代码并将其粘贴到新创建的 spec-helper.js 文件中。
    • var colors = require('mocha/lib/reporters/base').colors;颜色['pass'] = 32; - 这是您的 spec-helper.js 文件的代码。查看答案。
    • 不幸的是它没有用。我认为spec-helper.js 被忽略了
    【解决方案2】:

    实际上,在 iTerm 中调整“最小对比度”对我来说是侵入性最小的修复方法。调整数值,就会出现不可见的文字。

    另见此处: https://gitlab.com/gnachman/iterm2/issues/5992#note_38835787

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-12
      • 2019-08-19
      • 1970-01-01
      • 1970-01-01
      • 2022-07-23
      • 2012-11-24
      • 2013-09-24
      • 1970-01-01
      相关资源
      最近更新 更多