AngularJS指令 - 单元测试Karma覆盖范围

时间:2015-08-21 08:28:01

标签: angularjs unit-testing karma-jasmine karma-coverage

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

如何创建指令单元测试以反映在覆盖率摘要中?有人做一个让它成为可能的例子吗?

2 个答案:

答案 0 :(得分:2)

为什么你没有看到指令代码的覆盖范围的原因是,你提到的链接使用了$ compile()和通过compileDirective()函数在beforeEach()中调用的$ digest()。

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

而不是

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 
    });

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

答案 1 :(得分:0)

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