2016-10-15 17 views
2

を作成した後に失敗私は単にそれにSharedComponentと共有モジュールを追加し、メインアプリケーションのコンポーネントでそのコンポーネントを使用しました:角度-cliのテストは、共有モジュール

<acs-shared></acs-shared> 

すべてそのコンポーネントがない表示が「こんにちはです、世界!コンポーネントのプロパティを使用して:

<h1>Hello, {{name}}!</h1> 

このnpm startでプロジェクトを実行するとき、すべてが正常に動作しますが、今実行しているnpm testは失敗し、そう$(npm bin)/karma start ./karma.conf.jsはありません。最初の失敗は 'acs-shared'要素を認識しないためコンポーネントを作成できないことです。他のコンポーネントやモジュールを使用するコンポーネントをテストするために特別なことが必要ですか?

Chrome 54.0.2840 (Windows 10 0.0.0) App: AngularCliStarter should create the app FAILED 
    'acs-shared' is not a known element: 

プロジェクトはgithubの上で提供されています:https://github.com/JasonGoemaat/angular-cli-starter

答えて

5

あなたはTestBed設定にSharedModuleをインポートする必要があります。あなたがテストベッドでやっていることは

TestBed.configureTestingModule({ 
    imports: [ SharedModule ], 
    declarations: [ 
    AppComponent 
    ], 
    providers: [] 
}); 
+0

素晴らしいテスト環境用のスクラッチから@NgModuleを設定するようなもので、総理にかなっています!私は 'AppModule'をインポートし、それは働いた。コンポーネントが実際に入っているモジュールを含めない理由はありますか? AppModuleでSharedModuleをインポートすることを忘れる可能性があり、テストは成功すると思われますが、アプリケーションは動作しないようなので、これはより良いテストです。その後、宣言をスキップすることもできます。 –

+0

個人的には、これは単なる設定です。私はすべてのテストを制御し、不必要な変数から制限するようにしています。 AppModuleまでは、これをテストテストにインポートすることはありません。 AppModuleはあまりにも多くのことが起こっています。ここでは、多数のプロバイダ、BroswerModule、RoutingModules、必要のない他のものをインポートします。共有モジュールの場合でも、あまりにも多くの場合、共有モジュールをインポートするのではなく、テストベッドでコンポーネントを宣言するだけです。これも私の好みです。誰もが自分自身を持っています –

+1

あなたがテストするほど、あなたは自分のスタイルと好みを理解し始めるでしょう。 –

関連する問題