Я нашел решение, хотя точно не понимаю, почему, поскольку документация не объясняет его.
Существуют различные способы исправить тест.
В примере Я создал, необходимо включить тестовый код в fakeAsyn c и вызвать функции fixture.detectChanges () и tick () соответственно:
describe('AppComponent', () => {
it('shoud to submit the text', fakeAsync(() => {
const fixture = TestBed.configureTestingModule({
declarations: [ AppComponent ],
imports: [ FormsModule ],
}).createComponent(AppComponent)
fixture.detectChanges();
tick();
// rest of the code ...
}));
Я должен отметить, что мой оригинал Код создает компонент внутри beforeEach (без asyn c), и это имеет значение. Если вы создаете компонент внутри beforeEach без asyn c, вы должны использовать в нем fakeAsyn c, и вы НЕ МОЖЕТЕ вызывать fixture.detectChanges () внутри beforeEach (именно это сломало мой исходный код). Однако, если ваш beforeEach имеет asyn c, использование fakeAsyn c не является необходимым, и использование asyn c или fakeAsyn c в вашем тесте (оно) является необязательным.
beforeEach(async(() => {
const fixture = TestBed.configureTestingModule({
declarations: [ AppComponent ],
imports: [ FormsModule ],
}).createComponent(AppComponent)
fixture.detectChanges();
}));
it('shoud to submit the text', () => {
// rest of the code ...