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