У меня возникли проблемы с тестированием одного из моих компонентов. Тест выглядит следующим образом:Angular2/Jasmine Ожидаем быть нулевым Ошибка браузера
describe('SmpEventsNewCompactEventComponent',() => {
const specService: SmpSpecService = new SmpSpecService();
describe('Component rendering',() => {
let componentInstance: any;
let componentFixture: ComponentFixture<any>;
let cssSelector: string;
beforeEach(() => {
TestBed.configureTestingModule({
imports: [
MaterialModule.forRoot()
],
declarations: [
SmpEventsCompactEventComponent,
SmpEventsAddressComponent
],
providers: [
{ provide: SMP_OT_HELPER, useValue: newOtHelperInstance() },
DatePipe,
SmpEventTypeCheckerService,
SmpLangService
]
});
componentFixture = TestBed.createComponent(SmpEventsCompactEventComponent);
componentInstance = componentFixture.componentInstance;
});
describe('Global',() => {
it('GIVEN there are date/time AND address ' +
'WHEN component loads THEN display event',() => {
//// TEST ONE
componentInstance.isEventEnabled = true;
cssSelector = '.events-compact-event';
let debugElement = specService.queryDebugElement(
componentFixture, cssSelector);
expect(debugElement).not.toBeNull();
});
it('GIVEN there are no date/time AND no address ' +
'WHEN component loads THEN do not display event',() => {
//// TEST TWO
componentInstance.isEventEnabled = true;
//componentInstance.isAddressEnabled = false;
// componentInstance.isDateEnabled = false;
cssSelector = '.events-compact-event';
let debugElement = specService.queryDebugElement(
componentFixture, cssSelector);
console.log('--------------', debugElement.nativeElement);
// expect(debugElement.nativeElement).toBe(null);
// expect(true).toBe(true);
expect(debugElement).not.toBeNull();
});
});
});
specService.queryDebugElement выглядит следующим образом:
queryDebugElement(fixture: ComponentFixture<any>, cssSelector: string): DebugElement {
fixture.detectChanges();
return fixture.debugElement.query(By.css(cssSelector));
}
Всякий раз, когда я использую
expect(true).toBe(true);
или
expect(debugElement.nativeElement).toBe(null);
или
expect(debugElement).not.toBeNull();
в ИСПЫТАНИЯ ДВУХ, тесты работает или не нормально, но всякий раз, когда я использую
expect(debugElement).toBeNull();
Браузер, используемый при аварии карма (протестировано с хром/хром/PhantomJs) и не дает никакого понятия о том, что происходит. Это не просто «ожидать, что ложь, чтобы быть правдой» терпит неудачу, тестовый контекст завершается крахом.
Вы видите что-нибудь, что могло бы объяснить это поведение?
Хорошо ТНХ, будет делать :) – Shireilia
Но вы знаете, как может ли он сбой, если debugElement определен? Потому что я, по крайней мере, ожидал бы журнал ошибок или что-то, если элемент с debugElement нарушен, а не сбой браузера. – Shireilia
Я думаю, что ваш, кроме (debugElement), бросает ошибку. – saurav1405