2016-10-29 43 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