3
votes

Erreur de test angulaire: impossible de résoudre tous les paramètres du service:

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?


0 commentaires

3 Réponses :


1
votes

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';


1 commentaires

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 ...



0
votes

J'ai ajouté import 'core-js / es7 / reflect'; au fichier test.ts .


0 commentaires

0
votes

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


0 commentaires