Как я могу смоделировать экземпляр ControlContainer
, чтобы протестировать свой компонент?
У меня есть дочерний компонент, который вставляет ControlContainer
в конструктор, поэтому его использование
<acr-score-card formGroupName="score"></acr-score-card>
а сам компонент
@Component({
selector: 'acr-score-card',
templateUrl: './score-card.component.html',
styleUrls: ['./score-card.component.scss']
})
export class ScoreCardComponent implements OnInit {
...
form: FormGroup;
constructor(private ngControl: ControlContainer) { }
ngOnInit() {
this.form = <FormGroup>this.ngControl.control;
}
...
}
Все работает нормально, когда я запускаю в браузере, но я не могу заставить работать модульные тесты, так как я не уверен, как имитировать экземпляр ControlContainer
, чтобы настроить поставщика, это содержимое моего файла спецификации:
describe('ScoreCardComponent', () => {
let component: ScoreCardComponent;
let fixture: ComponentFixture<ScoreCardComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [TestingModule],
declarations: [ScoreCardComponent],
providers: [/** what goes here to mock the ControlContainer */]
schemas: [NO_ERRORS_SCHEMA]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(ScoreCardComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
Итак, повторяя вопрос, как я могу имитировать экземпляр ControlContainer
, чтобы я мог протестировать свой компонент?
ControlContainer
- это интерфейс, вам нужно создать экземпляр с классами, реализующими интерфейс, напримерFormGroupDirective
и т. Д. - person KiraAG   schedule 10.01.2019