J'essaie de couvrir mon appel de service dans le composant avec le cas de test comme décrit ci-dessous. Mais obtenir l'erreur lors de l'exécution ng test
comme indiqué ci-dessous:Angular 4 test case .then() n'est pas une fonction
Failed: this.monthService.getMonthView(...).then is not a function TypeError: this.monthService.getMonthView(...).then is not a function
Service: (MonthService.ts)
getMonthView
est l'appel de service à l'intérieur MonthService
getMonthView(forecastMonth: string): Promise<any[]> {
const options = new RequestOptions({ headers: this.headers });
const url = this.BaseUrl + forecastMonth;
return this.http.get(url, options)
.toPromise()
.then(response => response.json() as any[])
.catch(this.handleError);
}
Composant: (MonthComponent.ts)
MonthService
est importé et injecté dans MonthComponent.ts
loadDataOnMonthViewClicked(forecastMonth) {
this.monthService.getMonthView(forecastMonth)
.then(response =>
this.result = response
);
}
Test Suite:
beforeEach(() => {
/**
* Ref:https://angular.io/guide/testing#!#component-fixture
*/
fixture = TestBed.createComponent(MonthComponent);
component = fixture.componentInstance;
myService = TestBed.get(MonthService);
//fixture.detectChanges();
});
it('should be created',() => {
expect(component).toBeTruthy();
});
fit('should test loadDataOnMonthViewClick', async(() => {
let data=["10","20","30"];
spyOn(component.monthService, 'getMonthView').and.returnValue(result);
component.loadDataOnMonthViewClicked('Jan');
fixture.detectChanges();
expect(component.result).toBe(data);
}));