子コンポーネントが1つあるコンポーネントがあります。このような何か:角2 - 子コンポーネント内のイベントへのコールバック
<custom-component (customEvent)="foo()"></custom-component>
FOOは、単純なインクリメントであると仮定し、ものを行う機能です。
カスタムイベントが発生した後に実際に増分が発生することを保証する単体テストを作成したいと思います。これは現在動作しません
let oldValue = component.variableThatShouldBeIncremented;
childComponent.onCustomEvent.emit();
expect(component.variableThatShouldBeIncremented).toBeGreaterThan(oldValue);
:私はテストで現在実行しようとしました何
はこのようなものです。しかし、もし私がsetTimeoutにexpectをラップするなら、それはします。イベントが非同期であるため、これは意味があります。
私はsetTimeoutを取り除きたいです。 「イベントコールバックが完了するまで待つ」という方法がありますか?
私は例を調べようとしましたが、特定のイベントを発行した結果をチェックするのではなく、特定のイベントが発行されたことを確認するテストしか見つかりませんでした。
EDIT:
私が正しいのためyurzui答えを取っています。コードが機能するはずです。私は実際に問題を引き起こしていたコード、すなわちfoo関数を省略して、Qのコードを単純化して間違いを犯しました。
この関数はサービスから関数を呼び出していましたが、単純なインクリメントではありませんでした。
私の実際の問題は、サービスの模擬バージョン用に作成されたスパイが、イベントハンドラ内の関数呼び出しを登録していないということでした。テストでは
:問題は今、あなたは非同期と利用ダニを使用する必要があるだろう
なぜ
をし、最終的にあなたのテストが渡されます:あなたは
次のテンプレートを持っている場合たとえば、あなたの出力イベントは次のようになります。 '(customEvent)=" foo() "'の代わりに '(customEvent)=" foo "'を書くのですか? – yurzui
申し訳ありませんが、それはタイプミスでした。私は質問を編集しました:) –