2016-10-25 3 views
0

私は、Typescript Angular2アプリを構築しているWebpackの設定を持っています。私はJasmine/karmaテストをその中に統合しようとしています。WebpackとKarmaのAngular2はテンプレートのモジュールタグを見つけることができません

私はそうのような単純なWebPACKのテスト構成を持っている:

loaders: [{ 
      test: /\.ts$/, 
      loaders: ['awesome-typescript-loader', 'angular2-template-loader','angular2-router-loader'] 
     }, 
     { test: /\.html$/, loader: 'html' }, 
     { test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico)$/, loader: 'null' }, { 
      test: /\.scss$/, 
      exclude: helpers.root('app', 'assets', 'scss'), 
      loaders: ['exports-loader?module.exports.toString()','css','sass'] 
     }, { 
      test: /\.scss$/, 
      include: helpers.root('app', 'assets', 'scss'), 
      loaders: ['raw', 'postcss', 'sass'] 
     } 
    ], 

テンプレートが<my-custom-component></my-custom-component>のようなものを持っている場合、コンポーネントは、私は、たとえば、そのテンプレートで別のコンポーネントを使用しようとするをテストしていない限り、これは、正常に動作します。

この場合、カルマはテンプレートmy-custom-componentを見つけることができないというテンプレートコンパイラエラーを出します。

IもbeforeEachステップにおいてそう等テストベッドに必要なコンポーネントを提供しようとした:

TestBed.configureCompiler({ 
     providers: [ 
      { 
       provide: MyComponent, 
       useClass: MyComponent 
      }, 
      { 
       provide: ComponentBeingUsed, 
       useClass: ComponentBeingUsed 
      } 

] })。

ただし、テンプレートをコンパイルしようとするとエラーが発生します。

答えて

2

コンポーネントはプロバイダではなくモジュール宣言に属します。 これをテストベッドモジュール構成に追加する必要があります。

beforeEach(() => { 
    TestBed.configureTestingModule({ 
     declarations: [ 
      MyComponent    
     ] 
    }); 
}); 
関連する問題