0

Ich habe eine MyDataApiService-Abhängigkeit in ThingBuilderService eingeführt, und jetzt sind ThingBuilderService-Tests fehlgeschlagen. Wie mache ich MyDataApiService und erzähle ThingBuilderService in Tests davon? Unit Tests angularjs - Wie Service-Abhängigkeit injizieren?

export default class ThingBuilderService { 
    public static $inject = ['MyDataApiService']; 

    public myData: any[]; 

    /** 
    * Construct an instance of ThingBuilderService. 
    * 
    * @param {xyz.MyDataApiService} myDataApiService The MyDataApiService object. 
    */ 
    constructor(myDataApiService: xyz.MyDataApiService) { 
     myDataApiService.getSomeData() 
     .then((response) => this.myData = response.data); 
    } 

    //... 
} 

Test:. (Ich habe Code enthalten Teil zu zeigen, was ich denke, ich tun muss, aber ich verstehe nicht, wie die Stücke passen zusammen

describe('Thing Builder Service',() => { 
    var service; 
    var mockMyDataApiService = {}; 

    beforeEach(() => { 
     var mockMyDataApiService.getSomeData =() => { 
      var deferred = $q.defer(); 
      deferred.resolve({ data: [ 
       { 
        'ItemId': 1010101, 
        'Description': 'asdfasdf' 
       }, 
       { 
        'ItemId': 1010102, 
        'Description': 'jkjkjkjk' 
       } 
      ]}); 
      return deferred.promise; 
     }; 

     // *********** now what? *********** 
     // and do I have to do something to make '$q' 
     // available in the getSomeData function? 

     angular.mock.module('abc.module'); 
     angular.mock.inject(_ThingBuilderService_ => { 
      service = _ThingBuilderService_; 
     });  
    }); 

    // tests here 
    it('should ...',() => { ... }); 
}); 

Testläufe geben Fehler wie folgt aus:

Error: [$injector:unpr] Unknown provider: MyDataApiServiceProvider <- MyDataApiService <- ThingBuilderService

und diese:

Error: Base URL not defined for MyDataApiService

Antwort

0

Sie haben Ihre verspottet Service zu bieten:

angular.mock.module(function($provide) { 
    $provide.service(„MyDatApiService“, mockMyDataApiService); 
});