Karma Jasmine测试中的角度2实例化亲本中的全局注射器 [英] Angular 2 instantiate global injector in parent in Karma Jasmine test

查看:18
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆