私はangular2アプリケーションをテストしようとしています。私は、バックエンドにデータを送信するために、観察を使用してログインフォームを、持っている:ジャスミン:イベントでオブザーバブルをテストする
私が観察返すサービス機能、上のスパイを追加していた試験でdoLogin() {
this.usersService.login(this.model)
.subscribe((data) => {
console.log("In observable: " + data.isSuccess);
if (!data.isSuccess) {
this.alerts.push({});
}
});
}
、そのコンポーネントは、その上で動作することができるように:
すべての準備が整ったときusersService.login.and.returnValue(Observable.of(
<LoginResponse>{
isSuccess: true
}));
は、私はコンポーネントで機能をdoLoginトリガ送信ボタン、上のイベントをディスパッチ:
submitButton.dispatchEvent(new Event("click"));
fixture.detectChanges();
それが正常に動作します。 usersService.loginは、テストで呼び出されている場合、私がチェックしたときに残念なことに、:
expect(usersService.login).toHaveBeenCalled();
、観察が終了しませんでした、ログインがまだ呼び出されていないので、私は、エラーを取得します。
観察可能な状態になった後、スパイを確認するにはどうすればよいですか?
おかげで、あなたが答えるために。私は同じ方法でそれを行いますが、私の場合、サービスメソッドがコンポーネントによって呼び出される前にtoHaveBeenCalledがチェックされています。 –
私は分かりません;-)コンポーネントはサービスを同期的に呼び出し、サービスメソッドは何かを非同期で実行し、observableを返します。右? –
はい、そうですが、私が理解しているように、dispatchEventは非同期なので、test()関数は非同期モードで呼び出され、getDogsが呼び出される前にexpectがチェックされる可能性があります。 –