【发布时间】:2021-06-20 09:09:22
【问题描述】:
我是使用 Karma 进行 Angular 测试的新手,我不了解如何正确测试服务。 假设我有必须测试的服务:
@Injectable()
export class MyService {
constructor(private httpService: HttpService) { }
//methods to test
}
这是我的测试课:
describe('MyService', () => {
let service: MyService;
beforeEach(async(() => {
TestBed.configureTestingModule({
providers: [MyService],
}).compileComponents();
service = TestBed.get(MyService);
}));
});
当我运行 ng test 时,它会给出错误 NullInjectorError: No provider for HttpService!。
所以我将HttpService添加到测试类的providers数组中,这样:
describe('MyService', () => {
let service: MyService;
beforeEach(async(() => {
TestBed.configureTestingModule({
providers: [MyService, HttpService],
}).compileComponents();
service = TestBed.get(MyService);
}));
});
HttpService是这样的:
@Injectable()
export class HttpService{
constructor(private httpService: HttpClient) { }
}
所以现在我收到错误NullInjectorError: No provider for HttpClient!。 (HttpClient 来自@angular/common/http)。
如果我将 HttpClient 添加到测试类中的提供程序数组中,那么 HttpClient 构造函数中的所有服务/类都会出现相同的错误,依此类推。什么是建立服务的正确方法,而不必添加每个提供者,从而导致潜在的无限提供者?
【问题讨论】:
-
看看this
标签: angular testing karma-jasmine angular8 angular-test