簡體   English   中英

我可以在 mocha 輸出中隱藏失敗細節嗎?

[英]Can I hide failure details in mocha output?

有時在運行一組 mocha 測試時,我並不關心失敗的細節; 我只想要一個通過或失敗的測試列表。 我試過幾個記者,但他們似乎都輸出失敗的詳細信息。 我喜歡默認的規范報告結構,但我找不到如何隱藏細節。

這是一個說明性示例。 對於這些測試:

const assert = require('assert')
describe('test test', function() {
  it('should pass', function() {

  })
  it('should fail', function() {
    assert(false)
  })
})

這給出了這樣的輸出:

  test test
    ✓ should pass
    1) should fail


  1 passing (9ms)
  1 failing

  1) test test
       should fail:

      AssertionError [ERR_ASSERTION]: false == true
      + expected - actual

      -false
      +true

      at Context.<anonymous> (test-solution.js:69:5)

但我想要的只是這個:

  test test
    ✓ should pass
    1) should fail

  1 passing (9ms)
  1 failing

我是否遺漏了一些明顯的東西,或者這些細節不是我可以壓制的?

我也想隱藏這一點,對我來說,大多數默認記者似乎也不是那么好。 每條無用的線路都會花費我們時間。 在我看來,自定義輸出應該非常簡單。

構建自己的自定義記者是您問題的正確答案。 然而 - 因為這花了我很長時間 - 這里有一個非常簡短和簡單的替代方案:禁用報告器並在事件上做一些日志。

const Mocha = require('mocha');
let file = './devtest.js';
let passCount = 0;
let errors = [];

// start with disabled reporter
const mocha = new Mocha({ reporter: function () {} });
mocha.addFile(file);
console.log('\n===== start mocha file ' + file);

mocha.run()
   .on('pass', function (test) {
      passCount++;
      logSuccess(test.title);
   })
   .on('fail', function (test, err) {
      errors.push({test, err});
      logError(test.title);
   })
   .on('end', function () {
      console.log();
      console.log('   -------------------------');
      logSuccess(passCount + ' tests passed');
      logError(errors.length + ' tests failed');
      // do something here - like:
      // callback(errors)
   });

function logSuccess (str) {
   console.log('\u001b[32m  ✓ \u001b[0m\u001b[90m' + str + '\u001b[0m');
}
function logError (str) {
   console.log('\u001b[31m  ✖ ' + str + '\u001b[0m');
}

在此處輸入圖片說明

當然,與標准報告器相比,它的一些功能較少,但擴展非常簡單 - 您擁有所有錯誤和數據。 所以它非常快。

也許其他任何人都可以發布一個非常簡單的工作示例,一個自定義報告器 - 對我來說,自定義報告器破壞了我的控制台輸出,我對更多調試不感興趣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM