Unit testing Angular2服务测试:使用beforeach注入依赖项
我正在测试具有Unit testing Angular2服务测试:使用beforeach注入依赖项,unit-testing,angular,jasmine,Unit Testing,Angular,Jasmine,我正在测试具有Http依赖关系的服务。每个测试都是这样的: import { TestBed, async, inject } from '@angular/core/testing'; import { ValidationService } from './validation.service'; import { HttpModule, Http, Response, ResponseOptions, RequestOptions, Headers, XHRBackend } from '
Http
依赖关系的服务。每个测试都是这样的:
import { TestBed, async, inject } from '@angular/core/testing';
import { ValidationService } from './validation.service';
import { HttpModule, Http, Response, ResponseOptions, RequestOptions, Headers, XHRBackend } from '@angular/http';
import { MockBackend, MockConnection } from '@angular/http/testing';
describe('DashboardService', () => {
beforeEach(() => {
TestBed.configureTestingModule({
imports: [HttpModule],
providers: [
ValidationService,
{ provide: XHRBackend, useClass: MockBackend }
]
});
});
it('should ...',
inject([ValidationService, XHRBackend],
(service: ValidationService, mockBackEnd: MockBackend) => {
mockBackEnd.connections.subscribe((connection: MockConnection) => {
connection.mockRespond(new Response(new ResponseOptions({
body: JSON.stringify('content')
})));
});
}));
// assertions ...
});
正如您所看到的,我需要在它的每个位置注入后端模拟
是否可以在每次测试之前使用在每个测试之前注入依赖项
是否可以在每次测试之前使用beforeach注入依赖项
当然可以
let service;
beforeEach(inject([Service], (svc) => {
service = svc;
}))
尽管您也可以从测试台
获取服务,它也是一个注入器
let service;
beforeEach(() => {
TestBed.configureTestingModule({
...
})
service = TestBed.get(Service);
})
谢谢,我将尝试两种方法来确定什么最适合我。有没有一种方法可以在不使用测试台设置的情况下注入服务?@PriteshAcharya看到这个我得到了错误error:StaticInjectorError[Service]:NullInjectorError:No provider for Service代码>@MonkeySupersonic您在测试台上配置了它吗?你仍然需要这样做。