ユニットテストのプロフィールます。https://segmentfault.com/a/1190000009737186
ユニットテスト-Jasmineます。https://segmentfault.com/a/1190000009737204
angular2ユニットテストします。https://segmentfault.com/a/1190000009769787#articleHeader1
概念の概要
ジャスミン
ジャスミンのテストフレームワークは、テストスクリプト、および非常に良い意味論を書くためのツールセットを提供しますので、テストコードは、ほとんどの通路を読んだように見えます。
記述、beforeEach、それは、テストユニット、検査ユニットと期待される結果を実行する方法を定義することができ、これらの方法を用いて、等を期待します。
公式文書ます。https://jasmine.github.io/api/edge/global.html#expect
カルマ
ジャスミンは、カルマは、ブラウザで実行するために、これらのスクリプトを管理するために必要な、テストスクリプトを持って、これらのテストスクリプトを実行するために、カルマの容器を理解することができます。
Karma.conf.jsは、規則の数に相当する、ルートディレクトリにファイルを作成する必要があります。文書はように、必要なブラウザ環境をテストするプラグインを有効にする必要がカルマ、負荷テストスクリプトを、通知方法を試験報告書に気づく、ログ、およびすることです。
公式文書ます。https://karma-runner.github.io/1.0/config/configuration-file.html
角度のテストツール
testded
testdedは、角度ユニットテストのための方法を提供することを主なツールです。ユニットテスト構成と初期化環境、コンポーネントやサービスを作成するための方法を提供します。
スパイの数と非同期サポートがあります。
ユニットテストケースを記述するためにジャスミンとテストツールと組み合わせアンギュラ
ユニットテストのジャスミン基本的な考え方
テストスーツ、仕様、期待:ジャスミンユニットは、いくつかの概念をテスト
テストスーツのテストスイート
これは、ユニットテストケースの集合体として理解することができます。ジャスミンに代表される機能を説明
仕様のテストケース
単体テスト、ジャスミンは、それは関数を用いて表されています
期待の期待
試験装置が実行した後、期待される実行結果に、ジャスミンは機能を表すために使用することを期待します
試験方法ユニット共通ジャスミン
マッチャ:期待値判断、toBeTruthy、toBeNullこのため、彼らはまた、独自のMatcherを達成することができます
セットアップとティアダウン:テストスイートには、いくつかの重複したコードは、セットアップとティアダウンに配置することができます。各テストケースの実行ユニットの後に実行される各テストケース実行部、ティアダウン(afterEachに対応する)前に実行される(beforeEachに相当)を設定、
データ共有:それは、それぞれの内部でそれらを共有することができるように対応する変数で定義されているについて説明
スパイ:ドキュメントの翻訳ます。https://blog.csdn.net/GuoJiangweigege/article/details/52130589とを参照するとします。https://www.cnblogs.com/laixiangran/p/5060922.html
spyOn(オブジェクト、「methodNam」);オブジェクトのメソッドは、アナログ・コール、オブジェクトを呼び出したときに、methodNamオブジェクトオブジェクトに//追加し、この方法は、コードmethodNamを実行しません。beforEachでspyOnまたは各テストケースを実行した後にそれを書き込みは、破壊されます。
spyOn(オブジェクト、 "methodNam")and.callThrough();.コード// methodNam方法が実行されます
spyOnは(オブジェクトは、 "methodNam")and.callFake(FN);. // methodNam別の方法は、FN FN行われます
。SpyOn(オブジェクト、 "methodNam")and.returnValue(値);戻り値の// methodNam値
アンギュラツールセット
テストベッド
公式が言ったように、最も重要なのは、角度ユニットテストAPIです。設定生成モジュール、コンポーネント、ユニットテストのために、これらのモジュールまたはアセンブリによれば、個々のテストユニットテストコンテキストのセットを理解されたいです。
1つのテストベッドは、モジュールを作成します。TestBed.configureTestingModuleを
角度は、未分化@NgModuleのパラメータ設定モジュールとコンフィギュレーションを受信するためのモジュール、および戻り、構築します。
beforeEach(()=> {
TestBed.configureTestingModule({
輸入:[HttpModuleを]、
宣言:[TestComponent]
});
});
TestBed.createComponent:2テストベッドは、コンポーネントを作成します
コンポーネント、リターン・フィクスチャを作成します。固定具は、コアユニットテストを記述するために使用される変更に関連する属性およびDOMを、監視、コンポーネントインスタンスを含みます。
1 @Component({ 2 テンプレート: `<トレードビュー[ID] = "ID"(クローズ)= "_クローズ()"> </トレードビュー>` 3 }) 4 クラスTestComponent { 5 ID:番号= 0 ; 6 _close(){} 7 } 8 9 beforeEach(()=> { 10 TestBed.configureTestingModule({ 11の 輸入:[HttpModuleを〕、 12の 宣言:[TestComponent] 13 }); 14 フィクスチャ= TestBed.createComponent(TestComponent)。 15 成分= fixture.componentInstance; //组件实例 16 EL = fixture.nativeElement; //ネイティブ要素アセンブリ17 });
3非同期beforeach(特定基準角度公式文書試験 - 呼び出しcompileComponents())
templateUrlとstyleUrlsを使用されるコンポーネントは、テンプレートまたはテンプレートのスタイルを取得する場合、これは非同期プロセスであり、あなたはそれ以外の場合はエラーコンポーネントをコンパイルしません、コンポーネントを作成し、非同期beforeachを使用する必要があります。
以下は、コンポーネントを作成し、非同期beforeachを使用していません。
1 beforeEach(()=> { 2 TestBed.configureTestingModule({ 3つの 宣言:[BannerComponent]、 4 }); 5 フィクスチャ= TestBed.createComponent(BannerComponent); 6 })。
このコンポーネントは、templateUrlまたはstyleUrlsを使用していない場合は、コンパイラはcreateComponetコンポーネントが実行されますので、任意の問題を抱えているし、次にコンポーネントを作成しません。あなたがtemplateUrlやstyleUrlsを使用している場合しかし、その後にcreateComponentノーリターンアドレス場合は、コンパイルエラーになりますが実行したときに、URLアドレスファイルプロセスは、非同期で取得します。このとき、非同期beforeachでこの問題を解決します。
1 beforeEach(非同期(()=> {//使用角提供的辅助异步函数 2 TestBed.configureTestingModule({ 3つの 宣言:[BannerComponent]、 4 }) 5 .compileComponents() 6 .then(()=> { 7 固定具= TestBed.createComponent(BannerComponent); 8 成分= fixture.componentInstance; 9 H1 = fixture.nativeElement.querySelector( 'H1' ); 10 }); 11 }))。