AngularJS 指令 - 单元测试 Karma 覆盖率

AngularJS Directives - unit tests Karma coverage

我在指令单元测试方面遇到了问题。我使用的方式来自: http://blog.revolunet.com/blog/2013/12/05/unit-testing-angularjs-directive/(作者:Julien Bouquillon) 为我的指令创建单元测试。该博客上提出的想法看起来非常适合我的需求并且得到了很好的解释,但我的问题是覆盖率没有反映在 Karma Coverage(伊斯坦布尔代码覆盖率工具)中。

我应该如何创建指令单元测试以反映在覆盖率摘要中?有人举个例子吗?

之所以看不到指令代码的覆盖率,是因为您提到的link使用了在beforeEach()中调用的$compile()和$digest()通过 compileDirective() 函数。

将那段代码(进入 compileDirective 的代码)移动到您的 it() 中,它应该在指令上完成覆盖。

而不是

describe("do some directive testing",function(){
 beforeEach(function(){
compileDirective();
});
 it('your test code',function(){
    //some code here 
});

执行以下操作。

 describe("do some directive testing",function(){
     beforeEach(function(){
       // some other code which execute before each of the it()..
    });
     it('your test code',function(){
        compileDirective();
        //some code here 
    });

所以基本上你可能需要对你的代码做一些调整。

我在我的 Grunt 配置文件中发现了一些问题,这就是未更新覆盖范围的原因。所以,Julien Bouquillon 的例子非常好,我推荐它。