2016-07-11 2 views
1

저는 Jasmine을 사용하여 작성중인 각도 서비스의 테스트 중심 개발을 시도하고 있습니다. 그러나, 나는 첫 번째 장애물을 발견 한 것 같아서 해결할 자원 의존성을 얻을 수 없습니다.테스트를 위해 Angular 서비스에 의존성 주입

내가 오류가 알 수없는 공급자 : $ resourceProvider < - $ 자원 < - lookupService

다음과 같이 내 코드는

모듈 :

(function() { 
'use strict'; 

angular 
    .module('common', ['ngSanitize', 'ngAnimate']); 
})(); 

서비스 :

(function() { 
'use strict'; 

angular 
    .module('common') 
    .service('lookupService', lookupService); 

lookupService.$inject = ['$resource', 'api']; 

function lookupService($resource, api) { 
    return { 
     getLookup: getLookup 
    }; 

    function getLookup() { 
     return "something"; 
    } 
} 

})(); 

테스트 :

describe('Service tests', 
function() { 

    var lookupService, mockApi, $httpBackend; 

    //mocks 
    beforeEach(function() { 
     mockApi = { getUri: jasmine.createSpy() }; 

     angular.mock.module('common', 
      function ($provide) { 
       $provide.value('api', mockApi); 
      }); 
    }); 


    //injects 
    beforeEach(function() { 
     inject(function ($injector) { 
      $httpBackend = $injector.get('$httpBackend'); 
      lookupService = $injector.get('lookupService'); 
     }); 
    }); 



    //tests 
    it('should be able to return something', 
     inject(function() { 
      expect(lookupService.getLookup()).toEqual("something"); 
     })); 

});//Service tests 

angular-resource.js 파일은 내 러너 파일에 포함되어 있습니다. 내가 어디로 잘못 가고 있는지 잘 모르겠다. 어떤 도움을 주시면 감사하겠습니다.

감사

+0

당신이 카르마를 사용하고 있습니까? karma.conf.js를 확인하고 모든 js 파일이 포함되어 있는지 확인할 수 있습니까? – Srijith

+0

사실 저는 독립 실행 형 재스민을 사용하여 실제로 실행하고 있습니다. 모듈, 서비스, 테스트 및 모든 anguarjs 파일은 SpecRunner 파일에 포함됩니다. –

답변

1

ngResource 종속성해야합니다 :

(function() { 
'use strict'; 

angular 
    .module('common', ['ngSanitize', 'ngAnimate', 'ngResource']); 
})(); 
+0

아! 당연하지! –