angular-cli
を使用して角2で最初のテストを行う方法を学習しています。angular cli:テスト中にセレクタが不明
新しいコンポーネントMyComponent
を作成したら、そのセレクタapp-mycomponent
をアプリケーションテンプレートに追加すると、すべてのテストが失敗し、app-mycomponent
は不明です。
この問題はテストでのみ発生します。私がアプリを起動すると、すべてうまくいきます。
私の環境:
npm : 3.10.10
node : 6.9.5
angular-cli : 1.0.0-beta.32.3
jasmine-core: 2.5.2
protractor: 5.1.0
ではなく、設定ファイルのトンをコピーし、ここでは再現する手順は、次のとおりです
は
ng new testproj cd testproj
新しいプロジェクトを作成するコンポーネントを作成します
ng generate component mycomp
./src/mycomp/mycomp.component.ts
に移動し、そのセレクタを注意(app-mycomp
する必要があります)編集
./src/app/component.html
と次の行を追加します。app-mycomp
は手順3 で見たセレクタである
テストを起動します。
ng test
<app-mycomp></app-mycomp>
は、ここでの障害が報告された:
Error: Template parse errors:
'app-mycomp' is not a known element:
1. If 'app-mycomp' is an Angular component, then verify that it is part of this module.
2. If 'app-mycomp' is a Web Component then add "CUSTOM_ELEMENTS_SCHEMA" to the '@NgModule.schemas' of this component to suppress this message. ("
{{title}}</h1>
[ERROR ->]<app-mycomp></app-mycomp>"): [email protected]:0
が、それはバグですか、私は何か間違ったことをしたのでしょうか。私は手動でMyComponent
をprovider
に設定して、AppComponent
に同じ問題を設定しようとしました。
は 'のsrc /アプリ/アプリのために' TestBed'を設定するときに '' declaration'としてMyComponent'を追加しました。 component.spec.ts'?それはステップ5でなければなりません。コンポーネントをテンプレートに追加するときには、コンポーネントをテストで使用できるようにする必要があります。 – jonrsharpe
@jonrsharpe:これは私が想像している部分ですが、角型クリスタルは私のためにこれを行うようです。スペックファイルでbeforEachを2回使用します:beforeEach(async())=> { TestBed.configureTestingModule {{ 宣言:[MyComponent] }) .compileComponents(); })); beforeEach(()=> { 固定具= TestBed.createComponent(MyComponentの); 成分= fixture.componentInstance; fixture.detectChanges();} )。 – Giova
MyComponentのテストに似ていますが、AppComponentのテストでエラーが発生したようです。これは、MyComponentを宣言に追加する必要があるテストです。 –