У меня есть конструктор, который использует это:
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();
});
});
Я получаю нулевую ошибку инжектора:
Error: StaticInjectorError(DynamicTestModule)[CoreSubMenuComponent -> CoreComponent]:
StaticInjectorError(Platform: core)[CoreSubMenuComponent -> CoreComponent]:
NullInjectorError: No provider for CoreComponent!
Он импортируется в модуль тестирования, поэтому проблема не в этом. Я также попытался добавить его в массив провайдеров. но это просто перемещает его в угловой рендер, который нельзя добавить в массив провайдеров. Я также добавил тег @injectable()
перед тегом @component
в CoreComponent
, но это не меняет моих тестов, которые не пройдены.
Я пытался получить его с помощью @host()
, но выдает ошибку. Я также пытался получить его с Injector
, но это также выдает ошибку. Это 4 компонента, которые используют CoreComponent
в качестве переменной для получения некоторой информации от них, но они делают тесты неудачными. Все остальные мои тесты прошли хорошо, более 80 тестов Только эти 4 не будут работать, потому что они пытаются получить свойства, которые определены в CoreComponent
.
Кто-нибудь знает, как я могу ссылаться на этот компонент с экземпляром, чтобы мои тесты прошли?