2016-10-29 41 views
1

我真的很討厭成爲那個人,但我一直在坐這個問題好幾天了。我將這三個文件作爲 更大的angularjs應用程序的一部分。我甚至無法獲得這個基本測試 通過(甚至工作)。我一直在比較項目中的文件, 我已經在線閱讀(嘗試所有人們建議的方式)。我有 甚至幾次從頭開始寫文件。我可能不能 看到我的錯誤了。我猜這是更容易發現(馬上) 後座司機。另一個AngularJS服務的'未知提供商'

我非常感謝任何幫助。

從一口輸出/因緣

PhantomJS 2.1.1 (Linux 0.0.0) SiteDescriptionService the service should be defined FAILED 
    Error: [$injector:unpr] Unknown provider: SiteDescriptionServiceProvider <- SiteDescriptionService 
    http://errors.angularjs.org/1.5.8/$injector/unpr?p0=SiteDescriptionServiceProvider%20%3C-%20SiteDescriptionService (line 4511) 
    bower_components/angular/angular.js:4511:86 
    [email protected]_components/angular/angular.js:4664:46 
    bower_components/angular/angular.js:4516:48 
    [email protected]_components/angular/angular.js:4664:46 
    [email protected]_components/angular/angular.js:4688:68 
    [email protected]_components/angular/angular.js:4710:31 
    [email protected]_components/angular-mocks/angular-mocks.js:3085:26 
    [email protected]://localhost:8080/context.js:151:17 
    [email protected]_components/angular-mocks/angular-mocks.js:3051:28 
    app/service/sitedescriptor-service-test.js:10:19 
    app/service/sitedescriptor-service-test.js:4:13 
    global [email protected]/service/sitedescriptor-service-test.js:1:9 
    Expected undefined to be truthy. 
    app/service/sitedescriptor-service-test.js:17:32 
    [email protected]://localhost:8080/context.js:151:17 

模塊聲明

(function(){ 
'use strict'; 

angular.module('application.service', []); 

})(); 

服務本身

(function() { 
    angular.module('application.service') 
    .service('SiteDescriptorService', 
     ['$http', '$q', function ($http, $q) { 
     var lastRequestFailed = true, 
      promise, 
      items = []; 

     return { 
      name: 'SiteDescriptorService', 

      getItems: function() { 
      if (!promise || lastRequestFailed) { 
       promise = $http.get('site.json').then(
       function (response) { 
        lastRequestFailed = false; 
        items = response.data; 
        return items; 
       }, function (response) { // error 
        lastRequestFailed = true; 
        return $q.reject(response); 
       }); 
      } 
      return promise; 
      } 
     }; 
     }] 
     ); 

})(); 

和測試

describe('SiteDescriptionService', function() { 
'use strict'; 

describe('the service', function() { 

    var service, httpBackend; 

    beforeEach(module('application.service')); 

    beforeEach(inject(function(_SiteDescriptionService_, $httpBackend) { 
    service = _SiteDescriptionService_; 
    httpBackend = $httpBackend; 
    console.log(service); 
    })); 

    it('should be defined', function() { 
    expect(service).toBeTruthy(); 
    }); 

}); 
}); 

乾杯 墊

+1

檢查服務名稱 – coolguy

+0

只是事後的想法,你有沒有嘗試過的打字稿 – Maccurt

+0

我我已經看到了它,我確實喜歡「更嚴格」的JavaScript思想,但是我的微軟技術歷史讓我猶豫不決。你猜我喜歡嗎? – Mats

回答

4

看起來你注入的依賴時,只使用不正確的名稱應該是「SiteDescriptorService」而不是「SiteDescriptionService」

+0

我能說什麼? F ***我!我告訴過你我已經閱讀過很多次了,並且失明瞭。非常感謝。乾杯 – Mats

+0

我想現在就哭了 – Mats

+0

它一直髮生在我身上,不痛心。 – Maccurt