問題タブ [ngmock]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
259 参照

angular - MockBuilder (angular および ng-mocks) を使用して特定のテストでプロバイダーを操作する方法

このケースを念頭に置いて設計されていると思ったので、数週間前に ng-mocks を使い始めましたが、私の人生では、それを実装する方法がわかりません。

つまり、MockBuilder/MockRender が定義された後、ネストされた記述/テストでモック プロバイダーの値を変更できますか?

私のアプリケーションには、コンテキストに応じて異なるデータを提供するサービスに依存するコンポーネントがよくあります。これが静的である場合、これはテストするのに十分簡単です。ここでは、ActivatedRoute を例として使用します。

ここまでは順調ですね。

しかし、そのテストの後、サービスを変更する別のスイートを実行したいと考えています。が 2 になるとします。私idは、これが の役割であると想定しましMockInstanceた。特定のテストのために、提供されるサービスなどをその場で変更できるようにすることです。

例を続けるためdescribeに、最初のテストの後にネストされた を追加します。

新しいモック値が実装されてrouteIdおらず、変更されていないため、このテストは失敗します。

これは悪い例だと思います。私はこれらのテストを非常に多くの異なる方法で書き直しましMockInstance.rememberたが、サービス インスタンス自体を使用または初期化しようとしましたが、成功していません。私が知る限り、MockBuilder と MockInstance は一緒に使用することを意図していないようであり、ng-mocks サイトにはそのような例はありません。このような場合のテストをビルドする唯一の方法はdescribes、独自の MockBuilder と MockRender を使用して個別にビルドすることです。

それとも、routeId公開して直接操作するのが最善の選択肢ですか?

0 投票する
1 に答える
41 参照

angular - 角度コンポーネントの自動モック

問題

Angular コンポーネントをテストしていると、次のようなエラー メッセージに出くわすことがよくあります。

理由

通常<app-chip>、テンプレートでコンポーネント (ここでは:) を使用しているためです。

モック化されたコンポーネントを Spec-File に追加するのを忘れていました:

コンポーネントのモックにng-mocksを使用しています。

望ましい解決策

テンプレートで使用されているコンポーネントを Test Config に手動で追加しなければならないことは、開発プロセスにメリットがないと思います: 使用しているコンポーネントを現在のモジュールにインポートするのを忘れた場合 (またはタイプミスの場合)、ビルドとにかく失敗します。(だから使いたくないCUSTOM_ELEMENTS_SCHEMA

テンプレートで使用するすべてのコンポーネントを宣言配列にモックとして自動的に追加する方法はありますか?

または、それを行わない (そして手動で追加し続ける) 理由はありますか?