問題タブ [angular2-testing]
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.
angular - routerLinkActive ディレクティブにより、undefined がオブジェクトではありません (「router.events.subscribe」を評価しています)
Angular2 RC3 と新しいルーターを使用しています。私のHTML ...
routerLinkActive は、選択されたリンクに従って「アクティブ」クラスを適用します。よく働く。
問題は [routerLinkActive] を追加することで、単体テストが失敗するようになりました...
undefined はオブジェクトではありません (「router.events.subscribe」を評価します)
誰かがこれを修正しましたか?
どうもありがとう
angular - beforeEachProviders の修正方法 (RC4 では非推奨)
Angular2 を RC3 から RC4 にアップグレードしました ...
私の単体テストでは、次のコードがあります...
これは問題なく動作しますが、RC4 に移行して以来、beforeEachProviders
.
物事を行う新しい方法が何であるか知っている人はいますか? beforeEachProviders
または、「@angular/core/testing」の代わりに別の場所からインポートする必要がありますか?
unit-testing - 依存関係を持つ依存関係を持つコンポーネントの単体テスト、何が問題なのですか?
おそらく私の間違いで解決できない迷惑なエラーがあります。私は単純なコンポーネントを持っていますが、これは実際には Web アプリケーションのトップバー要素に他なりません。
ご覧のとおり、このコンポーネントには依存関係が 1 つしかなく、UserService
非常に単純に使用されます。
このサービスにはいくつかの依存関係 (ルーターなど) もあるため、beforeEachProviders
ご覧のとおり、メソッドでそれらを提供する必要がありました。
テストを実行すると、次のエラー メッセージが表示されます。
Chrome 51.0.2704 (Mac OS X 10.11.5) コンポーネント: TopBar はコンポーネントを注入する必要があります 失敗 エラー: ロケーションのプロバイダーがありません! (TopBarComponent -> UserService -> Router -> Location) エラー: DI 例外[......]
まず、ロケーション プロバイダーが提供されていることがわかります。そして二次的に、なぜ私のテストでは、テストされたコンポーネントサービスに使用される依存関係も提供 (または注入) する必要があるのですか?
たとえば、上記のテストから Router を削除すると、コンポーネントが Router を使用していなくても、使用されているサービスが使用しているため、エラーが発生します。それでは、テストだけでなく、コンポーネントでも同じエラーを受け取るべきではありませんか?
更新 - コードとエラー メッセージの変更
仕様を次のように変更することで、このエラーの発生を止めることができました。
しかし、私のコンポーネントからこのエラーが発生していることを知っています:
TypeError: 未定義のプロパティ 'userService' を読み取れません
言及されたエラーはこの関数にあります:
私のコンポーネントですが、これはテストのみです。アプリでは正常に動作します。私のテストでは、何らかの理由で関数がコンストラクターのパラメーターに到達できません。
ここに一種のスタック...
angular - Angular2 RC4: overrideDirective
RC3 を RC4 に更新したところ、テストで次のエラーが発生しました。
TestComponentBuilder
内部では、この@angular/core@2.0.0-rc.4/testing/test_component_builder.js
メソッドの宣言を見ることができます
質問は次のとおりです。ディレクティブをオーバーライドするにはどうすればよいですか?
unit-testing - ActivatedRoute のパラメータに依存するコンポーネントを単体テストする方法は?
オブジェクトの編集に使用されるコンポーネントの単体テストを行っています。id
オブジェクトには、サービスでホストされているオブジェクトの配列から特定のオブジェクトを取得するために使用される一意があります。特定のものは、ルーティングを介して、具体的にはクラスid
を介して渡されるパラメーターを介して取得されます。ActivatedRoute
コンストラクタは次のとおりです。
このコンポーネントで基本的な単体テストを実行したいと考えています。ただし、パラメーターを挿入する方法がわかりません。id
コンポーネントにはこのパラメーターが必要です。
ところで、私はすでにSession
サービスのモックを持っているので、心配する必要はありません。
typescript - テストのために別のサービスをサービスに注入する - Angular2
2 つのサービスがあり、そのうちの 1 つは別のサービスに依存しています。
UserService
:
ApiService
:
だから私の問題は、依存関係をApiService
テストに挿入するのに苦労していることですUserService
. これが私がユーザーサービス仕様に持っているものです。(インポートは省略):
これがスローするエラーは次のとおりです。
私も試したのはApiService
、 のinject
中に を追加することでしit
たが、エラーは同じままなので、次のようになります。
it('Should ..., inject([UserService, ApiService] ...))
TypeScript を使用した Angular 2 RC4
angular - @angular/core/testing にはエクスポートされたメンバー「MockApplicationRef」がありません
古い angular2 単体テストを新しい RC4 バージョンで実行したいのですが、問題があります。
MockApplicationRef はどうなりましたか?
代わりにここで何を使用する必要がありますか?