2015-12-15 93 views
3

我越来越 - Error: [$injector:unpr] Unknown provider: $scopeProvider <- $scope运行以下测试时:

describe('mainCtrl', function() { 

beforeEach(module('app')); 
var controller, scope; 
var window = { 
    open: function (url, target, specs) { 
     var spec, specKey; 
     this.href = url; 
     this.target = target; 
     // Parse through the spec string to grab the parameters you passed through 
     var specArray = specs.split(','); 
     for (specKey in specArray) { 
      spec = specArray[specKey].split('='); 
      this[String.trim(spec[0])] = String.trim(spec[1]); 
     } 
    } 
}; 

beforeEach(inject(function ($controller, $window, $rootScope) { 
    scope = $rootScope.$new(); 
    controller = $controller('mainCtrl', {$scope: scope}); 
    window = $window; 
})); 

describe('$scope.popup1', function() { 

    it('should open a popup window when ISIN hyperlink is clicked within grid, passing ISIN object s values to shareDataService', inject(function ($window, $scope) { 
     spyOn($window, 'open').and.callFake(function() { 
      return true; 
     }); 
     scope.popup1() 
     expect(window.href).toEqual("views/Box_Ladder.html"); 
     expect(window.target).toEqual("_blank"); 
     expect(window.height).toEqual(400); 
     expect(window.width).toEqual(700); 
    }) 
    ) 
}) 
}); 

但我不知道为什么。我已经注入了范围(据我所知),并在我的karma.conf.js文件中包含了angular-mocks。

回答

4

这是因为你试图注入$scopeit功能:

it('should open a popup window ...', inject(function ($window, $scope) 

只是将其删除,它应该工作:

it('should open a popup window ...', inject(function ($window) 

就像错误状态,没有$scopeProvider。测试时,您必须手动创建示波器并对其进行分配,就像您在创建控制器时所做的一样:

scope = $rootScope.$new(); 
controller = $controller('mainCtrl', {$scope: scope}); 
+0

啊,现在工作谢谢! – xeon48

+0

不客气:) – tasseKATT

相关问题