[英]Angular JS: Error: [$injector:unpr] Unknown provider: $scopeProvider
我正在嘗試為我的應用程序編寫一些單元測試,但是遇到一個出現此錯誤的問題:
Chrome 46.0.2490(Mac OS X 10.10.5)app.customer“應在每個之前”鈎子應成功創建“失敗”錯誤:[$ injector:unpr]未知提供程序:$ scopeProvider <-$ scope <-Customer
我的test.js
文件如下所示:
describe('app.customers', function() {
var controller;
beforeEach(function() {
module('app', function($provide) {});
specHelper.injector(function($controller, $q, $rootScope, DataService) {});
});
beforeEach(function() {
sinon.stub(DataService, 'getCustomers', function() {
var deferred = $q.defer();
deferred.resolve(mockData.getMockCustomers());
return deferred.promise;
});
controller = $controller('Customer');
$rootScope.$apply();
});
describe('Customer Controller', function() {
it('should be created successfully', function() {
expect(controller).to.be.defined;
});
});
specHelper.verifyNoOutstandingHttpRequests();
});
我不確定為什么要尋找$scopeProvider
因為我沒有在測試中引用$scope.provider
。
一般而言,我對單元測試還很陌生,因此可以提供任何幫助。 提前致謝!
提前致謝!
您必須使用本地范圍初始化控制器。
beforeEach(function() {
sinon.stub(DataService, 'getCustomers', function() {
var deferred = $q.defer();
deferred.resolve(mockData.getMockCustomers());
return deferred.promise;
});
// inject local scope into controller
controller = $controller('Customer', {$scope: $rootScope});
$rootScope.$apply();
});
我的猜測是您的客戶控制器需要$ scope,但沒有提供它。 在應用程序中運行時,此操作會自動為您完成,但是在通過$ controller進行單元測試時,您需要手動提供一些操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.