2016-05-11 15 views
0

Gerade begann Jasmin Karma. der Test versagt aufgrund folgender Fehler:Testing factory toBeDefined Fehler

PhantomJS 2.1.1 (Mac OS X 0.0.0) dataservice spec should have dataservice be defined FAILED 
    Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL. 
    Error: [$injector:unpr] Unknown provider: dataserviceProvider <- dataservice 

i alle Abhängigkeiten nämlich $ zur Verfügung gestellt haben http und $ q noch unbekannten Anbieter Fehler. die Fabrik wurde in app.core-Modul beschrieben, die ich habe in der Karma-Conf-Datei enthalten

Was fehlt mir. die Fabrik funktioniert inder Projekt

Einheit die folgende http Fabrik Prüfung

(function() { 
    'use strict'; 
    angular 
     .module('app.core', []) 
     .factory('dataservice', dataservice); 

    dataservice.$inject = ['$http', '$q']; 

    function dataservice($http, $q) { 
     return { 
      makeRequest: makeRequest, 
     }; 


     function makeRequest(params) { 
      var defer = $q.defer(); 
      if (params.method == "GET") { 
       $http({ 
         method: params.method, 
         url: params.url, 
         headers: params.headers 
        }) 
        .then(function(response) { 
          defer.resolve(response); 
         }, 
         function(response) { 
          defer.reject(response); 
         }) 
      } 
      if (params.method == "POST") { 
       $http({ 
        method: params.method, 
        url: params.url, 
        data: params.parameters, 
        headers: params.headers 
       }) 

       .then(function(response) { 
          console.log(response); 
          defer.resolve(response); 
         }, 
         function(response) { 
          console.log("error"); 
          defer.reject(response); 
         }) 
      } 
      return defer.promise; 

})(); 

Testspezifikation:

(function(){ 
'use strict' 
describe('dataservice spec',function(){ 
    var dataservice; 
    beforeEach(function($injector){ 
     angular.module('app.core'); 
     //dataservice=$injector.get('dataservice') 
    }); 
    beforeEach(inject(function (_dataservice_,_$http_,_$q_) { 
    dataservice = _dataservice_; 
    $http=_$http_; 
    $q=_$q_; 
    })); 
    // beforeEach(inject(function() { 
//  var $injector = angular.injector(['app.core']); 
//  dataservice = $injector.get('dataservice'); 
// })); 
    it('should have dataservice be defined', function() { 
    expect(dataservice).toBeDefined(); 
    }); 

}) 


})(); 

Antwort

0

Sie werden Ihre Skripte aktualisieren müssen Sie wie folgt vor:

(function() { 
    'use strict'; 
    angular 
     .module('app.core', []) 
     .factory('dataservice', dataservice); 

    dataservice.$inject = ['$http', '$q']; 

    function dataservice($http, $q) { 
     return { 
     makeRequest: makeRequest 
     }; 

     function makeRequest(params) { 
     var defer = $q.defer(); 
     if (params.method == "GET") { 
      $http({ 
      method: params.method, 
      url: params.url, 
      headers: params.headers 
      }) 
      .then(function (response) { 
       defer.resolve(response); 
      }, 
      function (response) { 
       defer.reject(response); 
      }) 
     } 
     if (params.method == "POST") { 
      $http({ 
      method: params.method, 
      url: params.url, 
      data: params.parameters, 
      headers: params.headers 
      }) 

      .then(function (response) { 
       console.log(response); 
       defer.resolve(response); 
      }, 
      function (response) { 
       console.log("error"); 
       defer.reject(response); 
      }) 
     } 
     return defer.promise; 
     } 
    } 
    })(); 

Der Komponententest:

(function() { 
    'use strict' 
    describe('dataservice spec', function() { 
    var dataservice, 
     $http, 
     $q; 

    beforeEach(module('app.core')); 

    beforeEach(inject(function (_dataservice_, _$http_, _$q_) { 
     dataservice = _dataservice_; 
     $http = _$http_; 
     $q = _$q_; 
    })); 

    it('should have dataservice be defined', function() { 
     expect(dataservice).toBeDefined(); 
    }); 
    }) 
})(); 

So stellen Sie sicher, dass Sie Ihr Modul richtig sind geladen: beforeEach(module('app.core'));