Je suis nouveau dans les tests. J'ai un service et un fichier spec qui, lors de l'exécution, j'obtiens l'erreur suivante:
Erreur: impossible de résoudre tous les paramètres de DashboardService: (?). Erreur propriétés: Object ({ngSyntaxError: true})
Le fichier spec ressemble à ceci:
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { ApiService } from './../api.service';
import { Organization } from '../../models/organization';
@Injectable({
providedIn: ApiService
})
export class DashboardService {
constructor(private api: ApiService) {}
getPrograms(id: number): Observable<any> {
let url = '/apiurl' + id;
return this.api.get<Organization>(url);
}
}
Le service ressemble à ceci jusqu'à présent :
import { TestBed } from '@angular/core/testing';
import { DashboardService } from './dashboard.service';
import { ApiService } from './../api.service';
describe('The Dashboard Service', () => {
beforeEach(() => {
TestBed.configureTestingModule({ providers: [DashboardService, ApiService] });
});
it('should be created', () => {
const service: DashboardService = TestBed.get(DashboardService);
expect(service).toBeTruthy();
});
});
Donc je suppose que l'erreur est due aux dépendances au fichier service mais après avoir lu la documentation Angular, je ne suis toujours pas sûr de comment informer Angular de ces dépendances. Comment structurer le fichier spec pour lire correctement les dépendances?
3 Réponses :
Et quelque chose comme ça?
D'abord:
it('should be created', inject([DashboardService], (dashboardService: DashboardService) => {
expect(dashboardService).toBeTruthy();
}));
puis:
import { inject } from '@angular/core/testing';
Salut @Rene O - Merci! J'ai fini par ajouter import 'core-js / es7 / reflect'; au fichier test.ts et l'erreur a disparu. Bien que j'obtienne différentes erreurs probablement non liées maintenant ...
J'ai ajouté import 'core-js / es7 / reflect'; au fichier test.ts .
Pour moi, j'utilisais TestBed pour injecter une classe régulière et j'ai obtenu cette erreur. Cette classe n'était pas injectable même s'il s'agissait d'un service, nous devions en avoir des instances uniques et c'est ce qui m'a déconcerté. Au lieu de cela, créez simplement une nouvelle instance de cette classe en utilisant new testClass () etc. Dans mon cas, je pensais que cette classe avait un @Injectable () alors que ce n'était pas le cas