2
私は私のテストが2回実行されているAngular2 HTTP呼び出しのテストは二回実行
@Component({
selector: 'Techs',
template: '',
providers: [HTTP_PROVIDERS]
})
export class Techs {
public techs: Tech[];
constructor(http: Http) {
http
.get('src/app/techs/techs.json')
.map(response => response.json())
.subscribe(result => this.techs = result);
}
}
単純なコンポーネントとAngular2アプリを持っています
クローム49.0.2623する(Mac OS X 10.11.4) :実行さ6の0 SUCCESS(0秒/ 0秒)
LOG: 'テストの終わり'
クロム49.0.2623する(Mac OS X 10.11.4):実行さ6 6のSUCCESS(0.182私は、HTTPのテストを1回だけ実行され呼び出す削除する場合秒/ 0.153秒)しかし
クローム49.0.2623する(Mac OS X 10.11.4):実行される6 SUCCESSの6(0.182ここでは秒/ 0.153秒)
は私のテスト
describe('techs component',() => {
it('should render 3 elements <tech>', injectAsync([TestComponentBuilder], (tcb: TestComponentBuilder) => {
return tcb
.createAsync(Techs)
.then(fixture => {
fixture.componentInstance.techs = [{}, {}, {}];
fixture.detectChanges();
const techs = fixture.nativeElement;
expect(techs.querySelectorAll('tech').length).toBe(3);
});
}));
});
ありがとうございました。私はすでにHttpリクエストを模倣しようとしましたが、それと同じです... 'fakeAsync'については、最初のメソッド(Hockpバックエンドを嘲笑)と組み合わせて使うべきでしょうか? – rocketer
あなたは両方とも試してみることができます。 FakeAsyncでは、手動でマイクロタスクをトリガすることができます。この質問を参照してください:http://stackoverflow.com/questions/35990253/does-fakeasync-guarantee-promise-completion-after-tick-flushmicroservice/35991133?s=0|2.5647#35991133 –
それ以外の場合、テストをどのように実行しますか? –