私はまだAngular.io Heroesチュートリアルのバージョンのテストをプログラミングしています。コンポーネントのテストを書く際に、私は何か特有のものにぶつかります。私はこのテストに失敗することはできません。例えばAngular2、カルマ:fail()リクエストが失敗しない
:
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');
});
});
});
は、このテストを実行し、何の障害が報告されていません。 try-catchに失敗をラップします。デバッガはfail()で一時停止します。しかし、あなたはcatch()を入力しません。カルマは常に成功を報告します。なぜそうなのか?
私のテストは機能していると証明できないので、これは私にとって重要です。私はこれらのfixture.whenStable()のクローンを含む複数のテストを書いていました。私は明らかに間違ったコードを持っていましたが、間違った点を一つだけ修正するとすぐにすべてのエラーメッセージが消えました。失敗を証明できないと、テストスイートがかなり無効になります。
回答ありがとうございました。 Jerome。あなたはasync
に包まれasync
import { async } from '@angular/core/testing'
it('should always fail', async(() => {
fixture.detectChanges();
fixture.whenStable().then(() => {
fail('forced fail');
});
}));
を使用する必要があるので、
チュートリアルウェブサイトを持っていますか?私はいつもあなたの問題を解決しています! –
いいえ、「チュートリアルサイト」はありません。私は[ブログ](https://psamsotha.github.io/)を持っていますが、私はここにいるように私はそれについて積極的ではありません –