如何为指令链接AngularJS编写单元测试

时间:2016-02-22 03:00:50

标签: angularjs unit-testing

美好的一天!

这是我第一次编写单元测试,我甚至不知道从哪里开始。我已经看了一些例子,这是我的代码。

这是位于我的指令

中的验证功能
scope.validateInput = function () {
     if (scope.description < 100) {
          scope.validate_description_message = true;
     }
}

这是我的单元测试

describe('scope.validateInput', function() {
     beforeEach(inject(function ($rootScope, $compile) {
            scope = $rootScope;
            element = angular.element(html);
            $compile(element)(scope);
            scope.$digest();
     }));

     it('should return true when scope.description is less than 100 characters.', inject(function() {
            $rootScope.description = 1;
            $rootScope.validateInput();
            expect($rootScope.validate_description_message).toEqual(true);
        }));
    });

提前谢谢!

1 个答案:

答案 0 :(得分:0)

您应首先在describe中声明$ scope。并从$ rootscope创建一个新的范围。

describe('scope.validateInput', function() {
     var scope;
     beforeEach(inject(function ($rootScope, $compile) {
            scope = $rootScope.$new();
            element = angular.element(html);
            $compile(element)(scope);
            scope.$digest();
     }));

     it('should return true when scope.description is less than 100 characters.', inject(function() {
            scope.description = 1;
            scope.validateInput();
            expect(scope.validate_description_message).toEqual(true);
        }));
    });