it('should ...', inject([XService], (service: XService) => {
expect(service).toBeTruthy();
}));
这样我可以在'it'中使用服务。还有更多'它',我不想每次注入服务。我想在开始的某个地方注入服务(例如在beforeEach中),但我不能。 xService在构造函数中有很多依赖项,我也想得到它。
我能做到这一点的唯一方法就是将所有这些值设置在第一个'it'中。
let xService: XService;
let yService: YService;
let zService: ZService;
beforeEach(() => ...);
it('should ...', inject([XService], (service: XService) => {
xService = service;
yService = xService['yService'];
zService = xService['zService'];
expect(xService).toBeTruthy();
}));
但我个人认为这是一个丑陋的解决方案。我能以某种方式将它移到beforeEach之前吗?
答案 0 :(得分:2)
而不是inject
,请尝试使用TestBed.get()
。它的功能基本相同,您的问题可以轻松解决:
let xService: XService;
let yService: YService;
let zService: ZService;
beforeEach( () => {
TestBed.configureTestingModule( ... ).compileComponents();
xService = TestBed.get( XService );
yService = TestBed.get( YService );
zService = TestBed.get( ZService );
} );
it( 'should ...',() => {
expect( xService instanceof XService ).toBe( true );
} );