Javascript 由于构造函数中的组件,角度单元测试失败。

Javascript 由于构造函数中的组件,角度单元测试失败。,javascript,angular,testing,components,karma-runner,Javascript,Angular,Testing,Components,Karma Runner,我有一个构造函数使用这个: constructor( public core: CoreComponent, ) { // } 但是当我尝试用这样的测试用例测试这些组件时: describe('CoreSubMenuComponent', () => { let component: CoreSubMenuComponent; let fixture: ComponentFixture<CoreSubMenuComponent>; be

我有一个构造函数使用这个:

  constructor(
    public core: CoreComponent,
  ) {
   //
  }
但是当我尝试用这样的测试用例测试这些组件时:

describe('CoreSubMenuComponent', () => {
  let component: CoreSubMenuComponent;
  let fixture: ComponentFixture<CoreSubMenuComponent>;

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      imports: [
        TestingModule.forRoot(),
      ]
    }).compileComponents();
  }));

  beforeEach(() => {
    fixture = TestBed.createComponent(CoreSubMenuComponent);
    component = fixture.componentInstance;
    fixture.detectChanges();
  });

  it('should create', () => {
    expect(component).toBeTruthy();
  });
});
它被导入到testingModule中,因此这不是问题所在。我还尝试将其添加到提供者数组中。但这只会将其移动到角度渲染器,该渲染器无法添加到提供者数组。我还在
CoreComponent
中的
@component
标记之前添加了一个
@injectable()
标记,但它不会改变我的测试失败

我尝试使用
@host()
获取它,但它抛出了一个错误。我还试图用
注入器
获取它,但这也会引发一个错误。这4个组件使用
CoreComponent
作为var从中获取一些信息,但它们使测试失败。我所有的其他测试都通过了,超过80次。仅仅这4个将不起作用,因为它们试图获取在
CoreComponent
中定义的属性


有人知道我如何用一个实例引用这个组件,以便通过测试吗

要修复此错误,请使用@host en@可选装饰符。这告诉编译器查找它,但如果没有提供,则不需要:

  constructor(
    @Host() @Optional() public core: CoreComponent,
  ) {
    //
  }

这似乎是一个愚蠢的问题,但CoreComponent是一个真正的组件还是一个服务?是的,它是一个组件,实际上是ngprime模板的基本代码,所以你可以在这里看一下:我只是称它为all core而不是app,因为我在app.component.ts中处理其他东西
  constructor(
    @Host() @Optional() public core: CoreComponent,
  ) {
    //
  }