Karma Jasmine测试中的角度2实例化亲本中的全局注射器 [英] Angular 2 instantiate global injector in parent in Karma Jasmine test
本文介绍了Karma Jasmine测试中的角度2实例化亲本中的全局注射器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的设置与此帖子相同https://stackoverflow.com/a/42462579/1818048
但我无法在Karama Jasmine测试中使用ServiceLoctor.inject.get-注射器为空
constructor() {
this.inject = ServiceLocator.injector.get(InjectionService);
this.configService = ServiceLocator.injector.get(ConfigService);
}
在app.Moudle模块中,我声明了以下内容,以便它可以全局使用。
export class AppModule {
constructor(private injector: Injector) {
ServiceLocator.injector = this.injector;
}
}
这是我的测试设置的一个片段
describe('MyButtonComponent', () => {
let component: MyButtonComponent;
let fixture: ComponentFixture<MyButtonComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ButtonComponent, MyButtonComponent],
providers: [SomeService,
{ provide: Router, useClass: RouterTestingModule },
{ provide: ServerService, useClass: GenericMock },
]
})
.overrideComponent(ResourceService, {
set: {
providers: [
{ provide: ConfigService, useClass: ConfigServiceMock }
]
}
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(MyButtonComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
现在,当我运行测试时,ServiceLocator.injector为空。我如何才能使Karma Jasmin在父级中设置此设置,或者这是不可能的吗?
推荐答案
@Estus您的版本必须与我的版本不同下面的代码对我有效。但是你让我走上了正确的道路,谢谢。
beforeEach(inject([Injector], (injector: Injector) => {
ServiceLocator.injector = injector;
}));
这篇关于Karma Jasmine测试中的角度2实例化亲本中的全局注射器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文