Ich programmiere immer noch Tests für eine Version des Angular.io Heroes Tutorials. Beim Schreiben eines Tests für eine Komponente stoße ich auf etwas Eigenartiges. Ich kann diesen Test nicht zum Scheitern bringen.Angular2, Karma: fail() Anfragen NOT failing
Zum Beispiel:
describe('OrgDetailComponent',() => {
let comp: OrgDetailComponent;
let fixture: ComponentFixture<OrgDetailComponent>;
let de: DebugElement;
let el: HTMLElement;
let org1: Org = new Org({ ... fills Org ... });
let dialogService: DialogService = null;
let globalsService: GlobalsService = null;
let orgService: OrgService = null;
let routeStub: any = { data: Observable.of({ org: org1 }) } ;
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [ FormsModule, RouterTestingModule ],
providers : [
{ provide: DialogService, useClass: MockDialogService },
{ provide: GlobalsService, useClass: MockGlobalsService },
{ provide: OrgService, useClass: MockOrgService },
{ provide: ActivatedRoute, useValue: routeStub }
],
declarations: [ OrgDetailComponent ],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(OrgDetailComponent);
dialogService = fixture.debugElement.injector.get(DialogService);
globalsService = fixture.debugElement.injector.get(GlobalsService);
orgService = fixture.debugElement.injector.get(OrgService);
});
it('should always fail',() => {
fixture.detectChanges();
fixture.whenStable().then(() => {
fail('forced fail');
});
});
});
Führen Sie diesen Test und keine Fehler gemeldet werden. Wickeln Sie den Fehler in einen Versuchfang ein. Der Debugger pausiert bei fail(). Aber du gibst den catch() nicht ein. Karma meldet immer Erfolg. Whyso?
Dies ist relevant für mich, weil ich nicht beweisen kann, dass meine Tests funktionieren. Ich schrieb mehrere Tests mit Klonen dieser Fixture.whenStable(). Ich hatte demonstrativ falschen Code, aber sobald ich nur eine Sache korrigierte, die falsch war, verschwand jede Fehlermeldung. Nicht in der Lage zu sein, einen Fehler zu beweisen, macht die Testsuite ziemlich ungültig.
Danke für alle Antworten, Jerome.
Haben Sie ein Tutorial Website? Ich bekomme immer meine Fragen von Ihnen beantwortet! –
Nein, keine "Tutorial-Site". Ich habe einen [Blog] (https://psamsotha.github.io/), aber ich bin nicht so aktiv darauf wie ich hier bin –