首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Mocha不报告每次考试的时间?

为什么Mocha不报告每次考试的时间?
EN

Stack Overflow用户
提问于 2015-08-12 20:51:50
回答 1查看 9.6K关注 0票数 22

使用mocha进行node.js单元测试,我得到了以下输出:

代码语言:javascript
复制
Suite One:
  call Home Page
    √ should return correct result (65ms)
  call Login Page
    √ should return empty load
  do Login
    √ should return login details (53ms)
  call Dashboard
    √ should return empty load

  6 passing (192ms)

为什么对于两个测试用例,我得到了测试时间(65/53 ms),而其他两个测试用例却没有?有什么选择吗?我只找到了--slow,但仅此而已。

添加:如果测试速度慢,我会得到所有测试用例的时间:

代码语言:javascript
复制
Suite One:
 call Home Page 
  √ should return correct result (1155ms)
 call Login Page
  √ should return empty load (359ms)
 do Login
  √ should return login details (703ms)
 call Dashboard
  √ should return empty load (347ms)

看来,如果测试用例非常快,那么我就没有时间了。?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-17 16:48:01

您注意到的行为是Mocha的默认行为。除非另有规定,否则在命令行运行Mocha时,将得到spec报告程序(其类名为Spec)。

所有与摩卡捆绑在一起的记者都是基于Base记者,它有以下代码:

代码语言:javascript
复制
  runner.on('pass', function(test){
    stats.passes = stats.passes || 0;

    var medium = test.slow() / 2;
    test.speed = test.duration > test.slow()
      ? 'slow'
      : test.duration > medium
        ? 'medium'
        : 'fast';

    stats.passes++;
  });

您可以看到,超过被认为慢的毫秒数的测试(命令行中的--slow选项,默认为75 as )被标记为slow。这些花费超过一半的时间被标记为medium,小于此的被标记为fast

Spec记者的代码如下:

代码语言:javascript
复制
  runner.on('pass', function(test){
    if ('fast' == test.speed) {
      var fmt = indent()
        + color('checkmark', '  ' + Base.symbols.ok)
        + color('pass', ' %s ');
      cursor.CR();
      console.log(fmt, test.title);
    } else {
      var fmt = indent()
        + color('checkmark', '  ' + Base.symbols.ok)
        + color('pass', ' %s ')
        + color(test.speed, '(%dms)');
      cursor.CR();
      console.log(fmt, test.title, test.duration);
    }
  });

此代码运行在Base报告中的代码之后(BaseSpec之前初始化)。因此,当前面代码段中的处理程序运行时,测试已经标记为slowmediumfast。如您所见,Mocha只在测试速度不快时才会报告时间。

您可以通过将--slow 0传递到命令行来扩展Mocha报告时间的情况。(--slow -1完全关闭时间报告。)然而,你仍然可以在理论上得到测试,采取0ms,这些测试将被视为快速,没有任何时间报告。

如果您想要强制每个测试的时间报告,并使用像spec报告一样工作的报告,那么除了使用您自己的自定义报告之外,我找不到其他方法。

票数 45
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31975168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档