没有模板的测试指令属性

时间:2016-09-07 13:06:06

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

我正在尝试对Angular指令运行一些单元测试,该指令仅限于一个Attribute。现在我只是想确定指令是否存在。

有谁知道如何测试仅作为属性的指令?

以下是指令

的简单版本
function ResetCustomer() {
  return {
    restrict: 'A',
    link: (scope, elem) => {

      elem.bind('click', function() {
        //do stuff
      });
    }
  };
}

export default {
  name: 'resetCustomer',
  fn: ResetCustomer
};

... HTML

<a class="brand" reset-customer>
   <img src="path/to/image.jpg"/>
</a>

...和测试

describe('Unit: ResetCustomer', () => {

  let element, scope, compile;

  beforeEach(() => {
    angular.mock.module('app');
    angular.mock.inject(($compile, $rootScope) => {
      scope = $rootScope.$new();
      compile = $compile;
      element = angular.element('<a reset-customer></a>');
      compile(element)(scope);
      scope.$digest();
    });
  });

  it('should exist', () => {
    expect(element).toBeDefined();
  }); 
});

1 个答案:

答案 0 :(得分:1)

首先需要在指令上有一个可测试的东西。

例如,在回调中,它将范围变量isClicked分配给true / false。

然后你可以在测试中触发一个.click并且断言isClicked应该是真的。

在点击之前,您甚至可以加倍努力并使之前的断言isClicked为false。我无法记住所谓的方法,但90%确定它的.trigger(&#39;点击&#39;)或mousedown ......