誰かが私の質問を閉じているのではないかと心配していますが、満足のいく質問を見つけることができませんでした(多分Angular 2+ worldに制限があり、何か間違ったことを理解したため)。
Hello Worldがほとんど行われず、YouTubeデモがほとんど見られなかったことが理解できる限り:
ngテスト:
xxx.compnent.spec.ts
実行すると、JUnitに似た最終レポートがブラウザに表示されますng e2e:
ネストするユーザーイベントを念頭に置いてテストを記述します。
eg. page.navigateTo();
page.getParagraphText()
.then(msg => expect(msg).toEqual('Welcome to app!!'))
.then(msg => expect(msg).toEqual('xxx'))
.then(done, done.fail);
主にアプリケーションを一種の運用前環境に展開した後、分度器を使用してエンドツーエンドテストを実行します。
理論的には、2番目はエンドツーエンドに特化しており、エンドユーザーが行うフロー全体をシミュレートすることに焦点を当てています。
うまくいけば、ここが正解になるまで、舞台裏で何が起こって本当に違うのかと思っています。私はどちらが良いかを比較したくないが、確かに私はエンドユーザーによって行われたまったく同じアイデアを使用していくつかのテストを作成し、ngテストによってそれをトリガーしたため、どういうわけかいくつかの点を見逃している。
例えば:
...
it('should display the modal when `create Paste` is clicked', () => {
let createPasteButton = fixture.debugElement.query(By.css("button"));
//create a spy on the createPaste method
spyOn(component,"createPaste").and.callThrough();
//triggerEventHandler simulates a click event on the button object
createPasteButton.triggerEventHandler('click',null);
//spy checks whether the method was called
expect(component.createPaste).toHaveBeenCalled();
fixture.detectChanges();
expect(component.showModal).toBeTruthy("showModal should now be true");
expect(element.innerHTML).toContain("source-modal");
});
...
「分度器はテストの実行中に待機/スリープ動作を提供する」などのようなものを読みましたが、分度器が最終ユーザーをシミュレートできなかったテストを見ると、この集計値がどこにあるかわかりません。エンドユーザーがまったく同じフローを実行するようにテストをコーディングしている限り、Angular Cli。によって作成されたe2eフォルダーの下で提案されたe2eテストと同じになります。
私の研究が上記のように正しく理解するように私を駆り立てた場合、唯一の本当の違いは、開発者としての私のテストの編成方法です。舞台裏で実際に起こっていることは何もありません。
繰り返しになりますが、これは教訓的な目的のための質問を明確にするものとして理解していただければ幸いです。フレームワークをここで比較する意図はまったくありません。
あなたはすべてを理解する良い道を進んでいます。
ジャスミンフレームワークを使用してテストを記述し、テストをスイートとして定義し、テストできる結果を期待していますが、主なことは、実際にカルマランチャーを使用してブラウザーで直接テストを実行することです。これは通常、angularアプリで設定されます。
これは、テストを実行するサーバーが1つあり、それだけであることを意味します。独自の値でテストし、コンポーネントが正しく機能していることを確認します。
目的は、単一の機能(小さなテスト)が副作用なしに意図したとおりに正しく機能していることを、単一のコンポーネント(単体テスト)または複数のモジュール/コンポーネント(統合テスト)で確認することです。
Protractorは、AngularおよびAngularJSアプリケーション用のエンドツーエンドのテストフレームワークです。Protractorは、実際のブラウザで実行されているアプリケーションに対してテストを実行し、ユーザーと同じように対話します。
ここでは、作成したテストがユーザーとして機能します。これは、ブラウザでアプリケーションが実行されていることを意味し、別のプログラムがアプリケーションに対してテストを実行し、ユーザーの操作をシミュレートします。
これは非常に重要です。なぜなら、それは次の2つのことを意味するからです。
分度器の目的は、アプリケーションの完全な運用上のワークフローを検証することです。たとえば、ログインコンポーネントのユニットテスト、ログインサービスのユニットテスト、モジュール全体の統合テスト、およびいくつかのコンポーネント/サービスに依存するテストが必要な動作を記述します。これが完了したら、アプリケーションの認証プロセス全体を検証する完全なエンドツーエンドテストを後で作成します。
非常に論理的なテストには重要な比率があることに留意してください。
何故ですか ?多数のコンポーネントのユニットテストを正しく行った場合、エンドツーエンドテストで再度ユニットテストを行う必要はありません。
結論:
N.B。:これらの点にも注意してください:
お役に立てれば。