問題タブ [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.

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

angular - routerLinkActive ディレクティブにより、undefined がオブジェクトではありません (「router.events.subscribe」を評価しています)

Angular2 RC3 と新しいルーターを使用しています。私のHTML ...

routerLinkActive は、選択されたリンクに従って「アクティブ」クラスを適用します。よく働く。

問題は [routerLinkActive] を追加することで、単体テストが失敗するようになりました...

undefined はオブジェクトではありません (「router.events.subscribe」を評価します)

誰かがこれを修正しましたか?

どうもありがとう

0 投票する
3 に答える
8850 参照

angular - beforeEachProviders の修正方法 (RC4 では非推奨)

Angular2 を RC3 から RC4 にアップグレードしました ...

私の単体テストでは、次のコードがあります...

これは問題なく動作しますが、RC4 に移行して以来、beforeEachProviders.

物事を行う新しい方法が何であるか知っている人はいますか? beforeEachProvidersまたは、「@angular/core/testing」の代わりに別の場所からインポートする必要がありますか?

0 投票する
2 に答える
7148 参照

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' を読み取れません

言及されたエラーはこの関数にあります:

私のコンポーネントですが、これはテストのみです。アプリでは正常に動作します。私のテストでは、何らかの理由で関数がコンストラクターのパラメーターに到達できません。

ここに一種のスタック...

0 投票する
2 に答える
278 参照

angular - Angular2 RC4: overrideDirective

RC3 を RC4 に更新したところ、テストで次のエラーが発生しました。

TestComponentBuilder内部では、この@angular/core@2.0.0-rc.4/testing/test_component_builder.jsメソッドの宣言を見ることができます

質問は次のとおりです。ディレクティブをオーバーライドするにはどうすればよいですか?

0 投票する
10 に答える
89186 参照

unit-testing - ActivatedRoute のパラメータに依存するコンポーネントを単体テストする方法は?

オブジェクトの編集に使用されるコンポーネントの単体テストを行っています。idオブジェクトには、サービスでホストされているオブジェクトの配列から特定のオブジェクトを取得するために使用される一意があります。特定のものは、ルーティングを介して、具体的にはクラスidを介して渡されるパラメーターを介して取得されます。ActivatedRoute

コンストラクタは次のとおりです。

このコンポーネントで基本的な単体テストを実行したいと考えています。ただし、パラメーターを挿入する方法がわかりません。idコンポーネントにはこのパラメーターが必要です。

ところで、私はすでにSessionサービスのモックを持っているので、心配する必要はありません。

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

typescript - テストのために別のサービスをサービスに注入する - Angular2

2 つのサービスがあり、そのうちの 1 つは別のサービスに依存しています。

UserService:

ApiService:

だから私の問題は、依存関係をApiServiceテストに挿入するのに苦労していることですUserService. これが私がユーザーサービス仕様に持っているものです。(インポートは省略):

これがスローするエラーは次のとおりです。

私も試したのはApiService、 のinject中に を追加することでしitたが、エラーは同じままなので、次のようになります。 it('Should ..., inject([UserService, ApiService] ...))

TypeScript を使用した Angular 2 RC4

0 投票する
2 に答える
3876 参照

angular - @angular/core/testing にはエクスポートされたメンバー「MockApplicationRef」がありません

古い angular2 単体テストを新しい RC4 バージョンで実行したいのですが、問題があります。

MockApplicationRef はどうなりましたか?

代わりにここで何を使用する必要がありますか?