В общем есть компонент на angular4 написал для него тест замокал сервисы, все было норм, теперь добавляю внутри этого компонента вызов другого
<app-user-filter></app-user-filter>
получаю ошибку
Failed: Template parse errors:
'app-user-filter' is not a known element:
1. If 'app-user-filter' is an Angular component, then verify that it is part of this module.
import {async, ComponentFixture, TestBed} from '@angular/core/testing';
import {UserComponent} from '../user.component';
import {NgxPaginationModule} from 'ngx-pagination';
import {UserService} from '../user.service';
import {MockUserService} from './mockObjects/MockUserService';
import {ActivatedRoute} from '@angular/router';
import {MockActivatedRoute} from './mockObjects/MockActivatedRoute';
import set = Reflect.set;
describe('UserComponent', () => {
let component: UserComponent;
let fixture: ComponentFixture<UserComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [UserComponent],
imports: [
NgxPaginationModule
]
}).overrideComponent(UserComponent, {
set: {
providers: [
{provide: UserService, useClass: MockUserService},
{provide: ActivatedRoute, useClass: MockActivatedRoute}
]
}
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(UserComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should be created', () => {
fixture.detectChanges();
expect(component).toBeTruthy();
});
});
Можно создать пустой компонент прямо в тесте:
@Component({
selector: "app-user-filter",
template: ""
})
class FilterStubComponent{}
<...>
TestBed.configureTestingModule({
declarations: [
UserComponent
FilterStubComponent
]
<...>
Альтернативный вариант - просто игнорировать такие ошибки (подробнее):
import { NO_ERRORS_SCHEMA } from '@angular/core';
...
beforeEach( async(() => {
TestBed.configureTestingModule({
declarations: [ UserComponent ],
schemas: [ NO_ERRORS_SCHEMA ]
})
<...>
Продвижение своими сайтами как стратегия роста и независимости