Ошибка углового тестирования: не удается разрешить все параметры для службы:

Я новичок в тестировании. у меня есть service и spec файл, который при запуске я получаю следующую ошибку:

Ошибка: не удается разрешить все параметры для DashboardService: (?). Свойства ошибки: Object({ ngSyntaxError: true })

spec файл выглядит так:

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();
    });
});

service до сих пор выглядит так:

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);
    }
}

Так что я думаю, что ошибка из-за зависимостей к service файл, но после прочтения документации Angular я все еще не уверен, как сообщить Angular об этих зависимостях. Как я структурировал spec файл для чтения зависимостей правильно?

2 ответа

Для меня я использовал TestBed для внедрения обычного класса и получил эту ошибку. Этот класс нельзя было вводить, хотя это был сервис, нам нужно было иметь его уникальные экземпляры, и это меня оттолкнуло. Вместо этого просто создайте новый экземпляр этого класса, используя new testClass() и т. Д. В моем случае я думал, что у этого класса есть @Injectable(), когда его не было.

Как насчет этого?

Первый:

import { inject } from '@angular/core/testing';

затем:

it('should be created', inject([DashboardService], (dashboardService: DashboardService) => {
  expect(dashboardService).toBeTruthy();
}));

Я добавил import 'core-js/es7/reflect'; в test.ts файл.

Другие вопросы по тегам