Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jasmine单元测试,用于检查角度引导模式的范围_Javascript_Angularjs_Unit Testing_Jasmine_Bootstrap Modal - Fatal编程技术网

Javascript Jasmine单元测试,用于检查角度引导模式的范围

Javascript Jasmine单元测试,用于检查角度引导模式的范围,javascript,angularjs,unit-testing,jasmine,bootstrap-modal,Javascript,Angularjs,Unit Testing,Jasmine,Bootstrap Modal,我有一份物品清单。当您单击一个项目时,它会显示一个模式来显示该项目的数据。在列表的控制器中,有一个函数openRecentsModal,它从ng repeat列表中获取数据对象,并在运行该函数时在新的作用域上创建它。然后,新模式将该对象作为$scope.recentsFoldersData提供。我需要编写一个单元测试,以确保在作用域上定义了recentsFolderData,但我尝试的所有操作都会导致“预期未定义待定义”。我希望有人能提供帮助 以下是列表控制器中打开模式的方法: function

我有一份物品清单。当您单击一个项目时,它会显示一个模式来显示该项目的数据。在列表的控制器中,有一个函数openRecentsModal,它从ng repeat列表中获取数据对象,并在运行该函数时在新的作用域上创建它。然后,新模式将该对象作为$scope.recentsFoldersData提供。我需要编写一个单元测试,以确保在作用域上定义了recentsFolderData,但我尝试的所有操作都会导致“预期未定义待定义”。我希望有人能提供帮助

以下是列表控制器中打开模式的方法:

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();
});