Тесты проходят, когда запускаются индивидуально, а не когда работают вместе
У меня есть компонент, для которого я написал два теста. Оба теста использует setTimeout
, Я замечаю, что если я запускаю тестовые случаи вместе (в одном describe
тестовые случаи не пройдены, но если я буду хранить их отдельно describe
Тестовые случаи проходят. Почему это? Два тестовых случая
fit('should show dialog when message from DialogBoxService is received', () => {
let dialogBoxService: MockDialogBoxService = TestBed.get(DialogBoxService);
let dialogServiceContext = new DialogServiceContext(ComponentAndServiceID.QuestionDetailComponent, new QuestionDetailAdditionalInfo())
/*
At startup, there is a delay between creation of AppComponent and subscription to DialogService, I have added the test logic in setTimeout to give time for AppComponent to get created and also subscribe.
*/
setTimeout(() => {
spyOn(component, 'showDialog');
dialogBoxService.emitDialogMessage(dialogServiceContext);
expect(component.showDialog).toHaveBeenCalledWith(dialogServiceContext);
}, 1000);
});
fit('should handle message from AuthGuard service', () => {
let mockAuthGuard: MockAuthGuard = TestBed.get(AuthGuard);
spyOn(component, 'handleAuthGuardContextMessage');
let authGuardContext = new AuthGuardContext('You must sign in first', new AuthGuardAdditionalInfo());
setTimeout(() => {
mockAuthGuard.canActivate();
expect(component.handleAuthGuardContextMessage).toHaveBeenCalledWith(authGuardContext);
}, 1000);
});
Я подозреваю, что проблема связана с тем, что оба теста запускают свои expect
через 1000 миллисекунд, и, вероятно, один переопределяет другое, но я не уверен, так как не знаю, как jasmine
графики разные it