検索

前の記事では、ng の 単体テスト について説明しました。今日は、e2e (エンドツーエンド) テストについて話しましょう。

モジュールの単一の機能ポイントをテストする場合は単体テストが最適ですが、ユーザーが複数のページを操作するときにバグが発生する場合、現時点ではユーザーをシミュレートするために単体テストを使用する必要があります。もちろん、e2e テストは単体テストではできないことの多くを、e2e テストで実行できます。

以前、ng は e2e テストを実行するために Angular Scenario Runner を使用していましたが、現在は e2e を実行するために Protractor に置き換えられています。

分度器

Protractor は、e2e をテストするために Angularjs で使用されるフレームワークです。それ自体は npm モジュールであり、内部的に WebDriverJS 上に構築されています。Protractor を使用すると、実際のテスト ケースを完全にシミュレートできます。ユーザーの行動。

そのリソース アドレスの一部を以下に掲載します:

1.Protractor が提供するテスト API
2.分度器簡単な使用例
3.WebDriverJs ガイド。これは Protractor が依存するコアです。npm モジュールは selenium-webdriver

と呼ばれます。

分度器の動作原理

Protractor は主に次のものに依存して e2e テストを実行します。

1.WebDriver API、つまり上記の WebDriverJ は、フロントエンド テスト用に Selenium によって提供される関連する JS API です
2. Selenium Server、ブラウザードライバー
と通信するために使用されるバックエンド jar パッケージ 3.WebDriver ブラウザ ドライバ。実際の Web サイトのコンテンツを表示し、Selenium サーバーと通信するために使用されます。ここで実際のブラウザの操作が送信されます。

全体の操作プロセスは次のとおりです

これらのコンポーネント間の以前のやり取りについて詳しく知りたい場合は、

ここをクリックしてください

NG シード プロジェクトを使用して e2e を説明します

実際の e2e の例を説明するために、ng 公式が提供するシード プロジェクトを使用します。まず、次のコマンドを使用してシード プロジェクトを取得します。


コードをコピー コードは次のとおりです:
git clone https://github.com/angular/angular-seed.git

次に

を実行します

コードをコピー コードは次のとおりです:
npm インストール

関連する依存関係ファイルをすべてインストールします

ここでは、まず e2e テストの実行に必要な構成ファイルについて説明します。test/protractor-conf.js ファイルが関連する機能の構成に使用されていることがわかります。

1.specs は実行するテスト ファイルのパスを表します。ここでは e2e/*.js です

2.baseUrlはテストファイル内のブラウザ間のジャンプページのルートアドレスを表します
3.capabilities は、テスト ケースの実行に使用するブラウザを表します。たとえば、Chrome を使用する場合は、次のように設定できます

コードをコピー コードは次のとおりです:
機能: {
'ブラウザ名': 'クロム'
}

framework はどのテスト フレームワークが使用されているかを表します。ここで使用されているのは jasmine

この設定ファイルについて詳しく知りたい場合は、

ここをクリックして表示してください

設定ファイルについて説明した後、まず、公式 Web サイトからサンプルを貼り付けて、テスト ケースの作成方法を見てみましょう。

コードをコピー コードは次のとおりです:

'厳密な使用';

/* https://github.com/angular/protractor/blob/master/docs/getting-started.md */

describe('私のアプリ', function() {

ブラウザ.get('index.html');
  it('位置ハッシュ/フラグメントが空の場合、自動的に /view1 にリダイレクトされるはずです', function() {
    Expect(browser.getLocationAbsUrl()).toMatch("/view1");
  });


  description('view1', function() {

beforeEach(function() {
      browser.get('index.html#/view1');
    });


    it('ユーザーが /view1 に移動したときに view1 をレンダリングする必要があります', function() {
      Expect(element.all(by.css('[ng-view] p')).first().getText()).
        toMatch(/ビュー 1 の一部/);
    });

});


  description('view2', function() {

beforeEach(function() {
      browser.get('index.html#/view2');
    });


    it('ユーザーが /view2 に移動したときに view2 をレンダリングする必要があります', function() {
      Expect(element.all(by.css('[ng-view] p')).first().getText()).
        toMatch(/ビュー 2 の一部/);
    });

});
});


 
最初に上の语法は、jasmine フレームでサポートされている写法であり、理解されていない使用法の可用性点击这里

ここでは、分度器が提供するプロパティに関する一般的な方法についてのみ説明します

1.browser、全局オブジェクト、現在のブラウザの 1 つの例を表し、地名を変更するためによく使用される get メソッドです
2.要素、全局所オブジェクト、画像 jquery の機能を提供し、通常はオブジェクトと組み合わせて使用​​されます
3.by、すべての局所オブジェクト、選択ツールの種類を提供します。たとえば、css、model、bind などの特性を介して要素を実行できます

要素による方法については、前述の分度器 API 文

を参照してください。

说了これ多、跑一面上の测试用例、命令比较简单

复制代 代码如下:

npm run update-webdriver

これらのダウンロード関連のブラウザーは、Selenium-server の本体の jar パッケージに関連付けられていますが、この 2 つのソースはすべて Google サービスにあるため、一般的にはこれらは失われています。そのため、ブラウザーの翻訳を個別にダウンロードできます。地址如下:

1.Chrome ドライバー地址、一般的に下ろすchromedriver_2.9.zipこのファイル。

2.selenium-server 本地下載一 本地下載二 本地下載二 selenium-server-standalone-2.40.0.jarこのファイル。

その後、selenium-server のポートを分度器包囲の selenium ファイルを移動し、上記のようにコマンドを超過した後、このファイルも空ではなく、直接置き換えることができます。また、chromedriver_2.9.zip を取得します。解読後のファイルはここにあります

最後に次のコマンドを実行しましたが、検査結果が確認されました

复制代 代码如下:

npm 分度器を実行

ng 子リストのリストに関連するコマンド実行をもっと知っているので、ポイントをここで見ることができます

总结

ng 的 e2e 测试要比单元测试構成要繁琐的多、不过它能為的事情也很多、非常に值的你也试一试、有什么问题可评论里去。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
CおよびJavaScript:接続が説明しましたCおよびJavaScript:接続が説明しましたApr 23, 2025 am 12:07 AM

CおよびJavaScriptは、WebAssemblyを介して相互運用性を実現します。 1)CコードはWebAssemblyモジュールにコンパイルされ、JavaScript環境に導入され、コンピューティングパワーが強化されます。 2)ゲーム開発では、Cは物理エンジンとグラフィックスレンダリングを処理し、JavaScriptはゲームロジックとユーザーインターフェイスを担当します。

Webサイトからアプリまで:JavaScriptの多様なアプリケーションWebサイトからアプリまで:JavaScriptの多様なアプリケーションApr 22, 2025 am 12:02 AM

JavaScriptは、Webサイト、モバイルアプリケーション、デスクトップアプリケーション、サーバー側のプログラミングで広く使用されています。 1)Webサイト開発では、JavaScriptはHTMLおよびCSSと一緒にDOMを運用して、JQueryやReactなどのフレームワークをサポートします。 2)ReactNativeおよびIonicを通じて、JavaScriptはクロスプラットフォームモバイルアプリケーションを開発するために使用されます。 3)電子フレームワークにより、JavaScriptはデスクトップアプリケーションを構築できます。 4)node.jsを使用すると、JavaScriptがサーバー側で実行され、高い並行リクエストをサポートします。

Python vs. JavaScript:ユースケースとアプリケーションと比較されますPython vs. JavaScript:ユースケースとアプリケーションと比較されますApr 21, 2025 am 12:01 AM

Pythonはデータサイエンスと自動化により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、データ処理とモデリングのためにNumpyやPandasなどのライブラリを使用して、データサイエンスと機械学習でうまく機能します。 2。Pythonは、自動化とスクリプトにおいて簡潔で効率的です。 3. JavaScriptはフロントエンド開発に不可欠であり、動的なWebページと単一ページアプリケーションの構築に使用されます。 4. JavaScriptは、node.jsを通じてバックエンド開発において役割を果たし、フルスタック開発をサポートします。

JavaScript通訳者とコンパイラにおけるC/Cの役割JavaScript通訳者とコンパイラにおけるC/Cの役割Apr 20, 2025 am 12:01 AM

CとCは、主に通訳者とJITコンパイラを実装するために使用されるJavaScriptエンジンで重要な役割を果たします。 1)cは、JavaScriptソースコードを解析し、抽象的な構文ツリーを生成するために使用されます。 2)Cは、Bytecodeの生成と実行を担当します。 3)Cは、JITコンパイラを実装し、実行時にホットスポットコードを最適化およびコンパイルし、JavaScriptの実行効率を大幅に改善します。

JavaScript in Action:実際の例とプロジェクトJavaScript in Action:実際の例とプロジェクトApr 19, 2025 am 12:13 AM

現実世界でのJavaScriptのアプリケーションには、フロントエンドとバックエンドの開発が含まれます。 1)DOM操作とイベント処理を含むTODOリストアプリケーションを構築して、フロントエンドアプリケーションを表示します。 2)node.jsを介してRestfulapiを構築し、バックエンドアプリケーションをデモンストレーションします。

JavaScriptとWeb:コア機能とユースケースJavaScriptとWeb:コア機能とユースケースApr 18, 2025 am 12:19 AM

Web開発におけるJavaScriptの主な用途には、クライアントの相互作用、フォーム検証、非同期通信が含まれます。 1)DOM操作による動的なコンテンツの更新とユーザーインタラクション。 2)ユーザーエクスペリエンスを改善するためにデータを提出する前に、クライアントの検証が実行されます。 3)サーバーとのリフレッシュレス通信は、AJAXテクノロジーを通じて達成されます。

JavaScriptエンジンの理解:実装の詳細JavaScriptエンジンの理解:実装の詳細Apr 17, 2025 am 12:05 AM

JavaScriptエンジンが内部的にどのように機能するかを理解することは、開発者にとってより効率的なコードの作成とパフォーマンスのボトルネックと最適化戦略の理解に役立つためです。 1)エンジンのワークフローには、3つの段階が含まれます。解析、コンパイル、実行。 2)実行プロセス中、エンジンはインラインキャッシュや非表示クラスなどの動的最適化を実行します。 3)ベストプラクティスには、グローバル変数の避け、ループの最適化、constとletsの使用、閉鎖の過度の使用の回避が含まれます。

Python vs. JavaScript:学習曲線と使いやすさPython vs. JavaScript:学習曲線と使いやすさApr 16, 2025 am 12:12 AM

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール