如何为以下角度函数编写单元测试用例。我是业力和茉莉的新手。使用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');
}
}
}
};
答案 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
?