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