2

我无法理解如何对函数进行单元测试,以便伊斯坦布尔将它们视为涵盖。

举一个非常简单的例子,我创建了这个数学模块:

var add = function( one, two ){
    return one + two;
}

module.exports = {
    add: add
};

和基本单元测试:

var chai = require('chai');
var expect = chai.expect;

describe('add() method', function(){
    it('should do math', function(){
        expect( some.add(1, 1) ).to.equal(2);
    });
});

伊斯坦布尔制作的报告给了我这些结果:

  • 报表:66.67% (2 / 3)
  • 分支:100% (0 / 0)
  • 功能:0% (0 / 1)
  • 行数:66.67% (2 / 3)
  • 忽略:无

在此处输入图像描述

如果仅仅测试调用函数的结果不算作覆盖,那么当它在单元测试无法访问的函数范围内时,你应该如何测试这段代码?

4

1 回答 1

1

与所有最棘手的问题一样,这是由一些愚蠢且无关的事情引起的。

我通过 grunt 运行 istanbul 并使用了env解决方法,因此在检查覆盖率时使用了正确的目录。就像这样:

env: {
    coverage: {
        APP_DIR_FOR_CODE_COVERAGE: '../test/coverage/instrument/app/'
    }
},

grunt-istanbul 文档所示

问题是我忘记包含env:coverage在我为运行覆盖测试而创建的任务中。

无论如何,如果你有同样的问题,你可能也做了一些非常愚蠢的事情。

于 2014-03-18T05:17:32.947 回答