业力测试在指令中失败

时间:2017-01-17 17:45:36

标签: angularjs karma-runner karma-jasmine

我有以下指令。该指令将在动画结束触发后触发。我现在只想为此指令添加测试。我为此创建了测试用例。但它失败了。有人可以帮忙吗? This is plunker

angular.module('movieApp')
    .directive('animationend', function() {
    return {
        restrict: 'A',
        scope: {
            animationend: '&'
        },
        link: function(scope, element) {

            var callback = scope.animationend(),
                events = 'animationend webkitAnimationEnd MSAnimationEnd' +
                        'transitionend webkitTransitionEnd';

            element.on(events, function(event) {
                console.log('[animationend directive] callback');
                callback.call(element[0], event);
            });
        }
    };
});

我的测试用例是

describe('Directive: animationend', function () {

  // load the directive's module
  beforeEach(module('movieApp'));

  var elements,
    scope,
    compile;

  beforeEach(inject(function ($rootScope, _$compile_) {
    scope = $rootScope.$new();
    compile = _$compile_;
    elements = angular.element('<div animationend="" ></div>');
    elements = compile(elements)(scope);
    scope.$digest();
  }));

  it('should trigger the callback once animationclass is added ', function () {

    scope.ctrl = {
      animationend: jasmine.createSpy('animationend')
    };
    scope.$digest();
    var events = 'animationend webkitAnimationEnd MSAnimationEnd' +
                        'transitionend webkitTransitionEnd';
    angular.element(elements).triggerHandler(events);
    // element.trigger(events);
    expect(scope.ctrl.animationend).toHaveBeenCalled();
  });


});

0 个答案:

没有答案