角度测试错误:无法解析服务的所有参数:

时间:2019-02-11 21:40:06

标签: angular testing karma-jasmine angular-test angular-testing

我是测试新手。我有一个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文件以正确读取依赖关系?

3 个答案:

答案 0 :(得分:1)

这样的事情怎么办?

第一:

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

然后:

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

答案 1 :(得分:0)

我已将import 'core-js/es7/reflect';添加到test.ts文件中。

答案 2 :(得分:0)

对我来说,我正在使用TestBed注入常规类并收到此错误。即使该类是服务,它也不是可注入的,我们需要具有它的唯一实例,这就是让我失望的原因。相反,只需使用new testClass()等创建此类的新实例。就我而言,我以为该类在没有@Injectable()时就拥有一个