如何在 mocha.js(或其他库)中修改测试结果的输出

How to modify test results' output in mocha.js (or another library)

我正在创建一个将由 mocha 运行 开发的测试套件。在测试中,我计划至少使用 shouldchai 。我正在测试 JSON 个对象。我希望 mocha 对成功的测试保持沉默,并且我想控制 运行 末尾的错误。现在,有很多红色文本描述 JSON 对象和其他信息。我想要的是覆盖输出。

这是我将从 testData.

导入的 JSON 对象中元素的示例测试
var should = require("should");
var chai = require("chai");
var expect = chai.expect;

const testData = require("./testData");

for (t of testData.data) {
        describe("This will fail", function() {

                it("Should have a zipperNut",function(done) {

                        t.should.have.property('zipperNut');
                        done();
                });
        });
}

我只想看到这个:

$ mocha testSuite.js
zipperNut
$

等等我想要的所有测试运行。我可以这样做吗?我需要使用不同的库吗?

Mocha 的输出由称为“默认报告程序”的东西确定。如果你想改变输出,你可以指定一个不同的报告者,这大概可以通过 npm 或类似的方式获得。要指定新的自定义报告程序,您可以这样做:

$ mocha --reporter my-reporter.js

其中 my-reporter.js 是包含我的“记者”的文件。对我来说,我只想要失败测试的简单名称,所​​以我的报告者看起来像:

'use strict';

const Mocha = require('mocha');
const {
  EVENT_RUN_END,
  EVENT_TEST_FAIL,
} = Mocha.Runner.constants;

class MyReporter {
  constructor(runner) {
    const stats = runner.stats;

    runner
      .on(EVENT_TEST_FAIL, (test, err) => {
        console.log(
          `${test.title}`
        );
      })
      .once(EVENT_RUN_END, () => {
        console.log(`end: ${stats.passes}/${stats.passes + stats.failures} ok`);
      });
  }
}

module.exports = MyReporter;

文档在这里:

https://mochajs.org/api/tutorial-custom-reporter.html