如何为以下角度函数编写单元测试用例

时间:2016-05-11 12:15:02

标签: javascript angularjs jasmine karma-runner

如何为以下角度函数编写单元测试用例。我是业力和茉莉的新手。使用rootscope的函数,还必须在if语句中测试window.open。

  $rootScope.getStandardMapPDF = function (mt, g, u, m) 
        {

    var menuTitle = mt.trim();
    var grade = g.trim();
    var unit = u.trim();
    var module = m.trim();
    /*---->Getting the Grade, Unit and Module wise Help files <-------*/
    if ($.isEmptyObject($rootScope.StandardMapFiles)) {
        $rootScope.StandardMapFiles = DataProvider.StandardHelpMaster;
    }

    var obj = $rootScope.StandardMapFiles;
    for (var i = 0; i < obj.length; i++) {
        if (obj[i].Grade.toLowerCase().indexOf(grade.toLowerCase()) != -1 && obj[i].Unit.toLowerCase().indexOf(unit.toLowerCase()) != -1 && obj[i].Module.toLowerCase().indexOf(module.toLowerCase()) != -1 && obj[i].MenuTitle.toLowerCase() == menuTitle.toLowerCase()) {
            if (obj[i].FileType.toLowerCase() == 'pdf') {
                var path = 'Resources/StandardMappings/' + obj[i].FileName.trim() + '.pdf';
                //var path = '/fs/oleshare/ole-mygen/StandardMappings/' + obj[i].FileName.trim() + '.pdf';
                $window.open(path, '_blank');
            }
            else if (obj[i].FileType.toLowerCase() == 'video') {
                var path = 'Resources/Video/' + obj[i].FileName.split('.')[0].trim() + '.htm';
                $window.open(path, '_blank');
            }
        }
    }
};

1 个答案:

答案 0 :(得分:1)

以下是您编写测试的基本概要:

(function() {
    describe('your.controller.name.js', function() {
        var $rootScope, $window;           

        // Init
        beforeEach(module('your-app-name'));
        beforeEach(inject(function(_$rootScope_,_$window_) {
            $rootScope = _$rootScope_;
            $window = _$window_;
        }));

    // Spies
    beforeEach(function() {
        spyOn($window,'open');
    });

    it('should be defined', function() {
        expect($rootScope.getStandardMapPDF).toBeDefined();
    });
    describe('$rootScope.getStandardMapPDF', function() {
        beforeEach(function() {
            $rootScope.getStandardMapPDF()
        });
        it('should call $window.open', function() {
            expect($window.open).toHaveBeenCalled();
        });
    });
}());

为什么要将功能附加到$rootScope