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,
) {
//
}