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

how to write a unit test case for the following angular function

本文关键字:函数 单元 测试用例      更新时间:2023-09-26

如何为以下角度函数编写单元测试用例。我是因果报应和茉莉花的新手。函数,还必须测试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');
            }
        }
    }
};

以下是如何编写测试的基本概述:

(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