AngularJS $ locationChangeSuccess的Jasmine测试

时间:2015-09-11 15:30:53

标签: angularjs unit-testing jasmine

我如何为以下代码编写测试?

        $scope.$on('$locationChangeSuccess', function () {
            $(".modal-backdrop").removeClass('modal-backdrop');
        });

2 个答案:

答案 0 :(得分:1)

以下内容应该有效:

beforeEach(function() {
  $('body').append('<div id="test" class="modal-backdrop"/>');
});

afterEach(function() {
  $('#test').remove();
});

it('should remove the classname on $locationChangeSuccess', function() {
  spyOn($scope, '$on').and.callThrough();

  $scope.$broadcast('$locationChangeSuccess');

  expect($scope.$on).toHaveBeenCalled();
  expect($('#test').hasClass('modal-backdrop')).toBe(false);
});

答案 1 :(得分:0)

要触发处理程序功能,您需要在测试中触发事件。这可以这样做:

$scope.$broadcast('$locationChangeSuccess');