Javascript Jasmine单元测试,用于检查角度引导模式的范围
我有一份物品清单。当您单击一个项目时,它会显示一个模式来显示该项目的数据。在列表的控制器中,有一个函数openRecentsModal,它从ng repeat列表中获取数据对象,并在运行该函数时在新的作用域上创建它。然后,新模式将该对象作为$scope.recentsFoldersData提供。我需要编写一个单元测试,以确保在作用域上定义了recentsFolderData,但我尝试的所有操作都会导致“预期未定义待定义”。我希望有人能提供帮助 以下是列表控制器中打开模式的方法:Javascript Jasmine单元测试,用于检查角度引导模式的范围,javascript,angularjs,unit-testing,jasmine,bootstrap-modal,Javascript,Angularjs,Unit Testing,Jasmine,Bootstrap Modal,我有一份物品清单。当您单击一个项目时,它会显示一个模式来显示该项目的数据。在列表的控制器中,有一个函数openRecentsModal,它从ng repeat列表中获取数据对象,并在运行该函数时在新的作用域上创建它。然后,新模式将该对象作为$scope.recentsFoldersData提供。我需要编写一个单元测试,以确保在作用域上定义了recentsFolderData,但我尝试的所有操作都会导致“预期未定义待定义”。我希望有人能提供帮助 以下是列表控制器中打开模式的方法: function
function openRecentsModal(obj) {
var scope = $rootScope.$new();
scope.recentsFoldersData = obj;
var controller = 'recentsFoldersDetailController';
$modal.open({
scope: scope,
controller: controller,
templateUrl: 'js/modal/recents/folder/recentsFoldersDetail.tpl.html'
});
}
这是模态的控制器:
angular.module('modal.recents.folder', [])
.controller('recentsFoldersDetailController', recentsFoldersDetailController);
recentsFoldersDetailController.$inject = ['$scope', '$modalInstance'];
function recentsFoldersDetailController($scope, $modalInstance) {
$scope.close = function close() {
$modalInstance.dismiss('close');
};
}
最后,这里是我正在进行的单元测试(我排除了正在通过的单元测试,以及此测试不需要的辅助函数):
我可以通过对调用modal的函数进行简单的更改来解决这个问题
function openRecentsModal(obj) {
$rootScope.recentsFoldersData = obj;
var controller = 'recentsFoldersDetailController';
$modal.open({
//scope: scope,
controller: controller,
templateUrl: 'js/modal/recents/folder/recentsFoldersDetail.tpl.html'
});
}
通过允许将对象放置在$rootScope(UI引导模式的默认设置)而不是新的$scope上,测试返回了一个定义值
it('should put recents object on the scope', function() {
mockListController();
scope.openRecentsModal(defaultSuccessfulRecentsDataResponse());
mockDetailController();
expect(scope.recentsFoldersData).toBeDefined();
});
it('should put recents object on the scope', function() {
mockListController();
scope.openRecentsModal(defaultSuccessfulRecentsDataResponse());
mockDetailController();
expect(scope.recentsFoldersData).toBeDefined();
});