为DOM指令编写Jasmine Test的最佳方法

时间:2013-12-24 22:00:36

标签: javascript angularjs angularjs-directive jasmine

我是Angular JS的Jasmine BDD测试的新手 - 任何人都可以告诉我一个简单的测试用例

我的指示

var app = angular.module('gls', []);

app.directive('changeBg', function() {
    return {
        restrict: 'A',
        link: function($scope, element, attrs) {
         element.bind('click', function(){
             element.css('background','red');
         });
        }
    };
});

标记

<body ng-app="gls">
<a href='#' change-bg>Test link 1</a>
</body>

1 个答案:

答案 0 :(得分:1)

通常,为了测试指令,您需要创建一个作用域,使用该指令编译一个简单的模板,然后执行一些操作。在这种情况下,操作是单击(据我所知,这需要jQuery)。

describe('Testing the changeBg directive', function() {
  var element = null;

  //you need to indicate your module in a test
  beforeEach(module('plunker'));

  beforeEach(inject(function($rootScope,$compile) {
    var scope = $rootScope.$new();
    var template = '<span change-bg></span>';
    element = $compile(template)(scope);
    element.click(); // Requires jQuery
  }));

  it('should be red after a click', function() {
    expect(element.css('background')).toEqual('red');
  });
});

您可以在this plunkr中看到它。