AngularJS / Karma - 指令中的单元测试函数

时间:2014-05-23 10:06:57

标签: angularjs unit-testing jasmine karma-runner directive

如何在指令的链接中对函数进行单元测试?我试过这样的事情,但没有奏效:

指令:

app.directive("hello", function(){
  return {
    link: function(scope){
      scope.hello = function(){
        return "hello";
      };
    }
  };
});

单元测试:

describe("Hello directive", function(){
  var compile, scope;

  beforeEach(inject(function($compile, $rootScope){
    scope = $rootScope.$new();
    compile = $compile;
  }));

  it("should return hello", function(){
    var element = compile("<hello></hello>")(scope);
    expect(element.scope.hello()).toBe("hello");
  });
});

1 个答案:

答案 0 :(得分:2)

您错过了对module的来电。

根据angular source for $compileProvider,指令限制外观就好(现在),默认为'EA'

  

注意:默认值是在angular-1.3.0(commit: 11f5aePR: 8321)中引入的,在该版本之前它只是'A'。在你的案例中,这可能是一个问题,看看你的问题是如何在2014年5月发布的。

我设置了一个小提示,通过两个更改来展示您的实现;

  • 调用module,以加载指令定义。
  • 将角度版本归结为1.3.0

<强> jsFiddle

是的,我迟到了,但你的问题仍然是[angularjs] + [单元测试]中最难回答的问题之一。我想我可以改变它。