簡體   English   中英

角JS:錯誤:[$ injector:unpr]未知提供程序:$ scopeProvider

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM