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