2017-01-30 7 views
0

私はAngular 2/AngularCLIアプリケーションで単体テストを設定しようとしています。アプリケーションが期待どおりに動作している間は、テストに失敗が示されます。コンポーネントユニットテストは、私のアングル2アプリケーションのコンポーネントだけをテストしていませんか?

したがって、私は思っていたので、コマンドラインから生成したテストコンポーネントをセットアップしました(ng g c testr)。これにより、コンポーネントファイルとともに基本コンポーネントテストが作成されます。私がこのコンポーネントにCDを入れ、 "ng test"でこの組み込みテストを実行すると、アプリケーションの他のコンポーネントに関連するエラーが発生します。個々のコンポーネントテストは単体テストだと思ったので、これは私にとっては混乱しています。そのため、特定のコンポーネントをテストするためにのみ設計されています。私は、これは「箱から出して、」作業する必要があると仮定し

/* tslint:disable:no-unused-variable */ 
import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 
import { By } from '@angular/platform-browser'; 
import { DebugElement } from '@angular/core'; 

import { TestrComponent } from './testr.component'; 

describe('TestrComponent',() => { 
    let component: TestrComponent; 
    let fixture: ComponentFixture<TestrComponent>; 

    beforeEach(async(() => { 
    TestBed.configureTestingModule({ 
     declarations: [ TestrComponent ] 
    }) 
    .compileComponents(); 
    })); 

    beforeEach(() => { 
    fixture = TestBed.createComponent(TestrComponent); 
    component = fixture.componentInstance; 
    fixture.detectChanges(); 
    }); 

    it('should create',() => { 
    expect(component).toBeTruthy(); 
    }); 
}); 

- それはAngularCLIによって自動的にセットアップされたので、これはコンポーネントのサンプルテストです。だからなぜ失敗?私はここに何かを逃していますかここのテストコードは、内部コンポーネントをテストするように設計されているのではなく、アプリ内の他のコンポーネントとの関係はテストされていますか?

ここに私が得ているエラーの例があります。明らかに、それは完全に別のコンポーネントのためです。そして、私はこの1つのテストを実行するだけで、さまざまなコンポーネントのためのこのような多くのエラーが発生しています。

ERROR in ./src/app/app.component.ts 
Module not found: Error: Can't resolve 'app/app.component.html' in '/Users/mko/Documents/abc-cli/abc-cli/cli-abc/src/app' 
@ ./src/app/app.component.ts 77:22-55 
@ ./src/app/app.component.spec.ts 
@ ./src \.spec\.ts 
@ ./src/test.ts 

は、ここで別のコンポーネントに再び関係する別のエラーです:

ERROR in ./src/app/views/client/client-panel.component.ts 
Module not found: Error: Can't resolve 'app/views/client/client-panel.component.html' in '/Users/mko/Documents/abc-cli/abc-cli/cli-abc/src/app/views/client' 
@ ./src/app/views/client/client-panel.component.ts 34:22-88 
@ ./src/app/views/client/client-panel.component.spec.ts 
@ ./src \.spec\.ts 
@ ./src/test.ts 

コンポーネントと実行「NGテスト」への私のCDは、またはそのコンポーネントのちょうどユニットテストを実行していないないことをした場合?そして、もしそうでなければ、私はこれを単に個々のコンポーネントテストを実行するために変更する必要がありますが、それらのすべてではありませんか?

+0

はい、これを上に追加しました。他のコンポーネントのエラーメッセージが表示されますこれだけでなく、理由は分かりません。 – Muirik

+0

申し訳ありませんが、明確にしてください。コンポーネントにcdして "ng test"を実行すると、そのコンポーネントの単体テストだけが実行されますか?そして、もしそうでなければ、私はこれを単に個々のコンポーネントテストを実行するために変更する必要がありますが、それらのすべてではありませんか? – Muirik

答えて

0

私は問題を理解しました。私が想定したものに反して、すべての個々のコンポーネント仕様テストは、記述ブロックにグループ化されているので、一緒に実行されます。だから、特定のコンポーネントにcd'ingして "ng test"を実行すると、そのテストだけが実行されることはありません。それは実際にそれらのすべてを実行します。

ただし、Fと同じように、何かを説明する機能を付けることによって、個々のコンポーネントのテストを実行することができます

fdescribe( 'SomeComponent'、()=> {...}

場合

しかし、もっと重要なのは、ここでは、「ngテスト」は実際には単体テストではなく単体テストのシリーズ全体を実行するように設計されていることです。

関連する問題