キーポイント
- ユニットテストは、特に数十万行のJavaScriptコードを含むアプリケーションでは、ソフトウェア開発にとって重要です。 AngularJSは、コードテストを容易にするために、依存関係噴射(DI)などの機能をサポートしています。
- モジュールのライフサイクルの開始時に構成と実行ブロックが実行され、重要なロジックが含まれています。それらは他のコンポーネントと同じように直接呼ぶことはできません。これにより、テストをトリッキーにしますが、重要な役割により無視することはできません。
- angularjsは、
$scope
のイベントを通じてイベントの集約を提供し、オブジェクトがお互いを知らなくても相互に対話できるようにします。単体テストは単独で記述されるため、テスト仕様では、機能をテストするために一方の端をシミュレートする必要があります。$emit/$broadcast
ルーティングは、ユーザーがアプリケーションでナビゲートする方法を定義し、変更が悪いユーザーエクスペリエンスにつながる可能性があります。したがって、ルーティングもテストする必要があります。 AngularJSアプリケーションで最も一般的に使用される2つのルーターは、ngrouteとUIルーターです。 - AngularJSのアニメーションのテストは、テスト命令よりも簡単であり、 ライブラリにはこのプロセスを簡素化するためのモジュールが含まれています。 AngularJSは、最初のダイジェストループが完了するまでアニメーションの実行を防ぎ、初期バインディングを高速化します。
-
angular-mocks
ngAnimateMock
完全に機能するソフトウェアの構築と配信の過程で、さまざまなテクノロジーを適用して、ソフトウェアの正しさと品質を確認します。ユニットテストはテクニックの1つです。多くの組織は、アプリケーションの潜在的な問題を見つけて修正するコストを削減するため、単体テストに大きな重点を置いています。数十万行のJavaScriptコードを含むアプリケーションの開発を開始したとき、コードのテストを避けることができませんでした。一部のJavaScript開発者は、ランタイム前に言語の動作が不明であるため、JavaScriptのテストがより重要であると言います。ありがたいことに、AngularJSは、依存関係注入(DI)などの機能をサポートすることにより、このフレームワークを使用して記述されたテストコードを簡単に作成します。以前の記事では、シミュレーション、コントローラー、サービス、プロバイダーのテスト方法、および指示のテスト方法に関するいくつかのヒントについて説明しました。この記事では、ブートブロックのテスト(構成ブロック、実行ブロック、およびルーティング解像度ブロックを含む)、スコープイベント、およびAngularJSアプリケーションのアニメーションを紹介します。この記事で使用されているコードをGitHubリポジトリからダウンロードすることもできます。ここでは、テストを実行するための指示を見つけることもできます。
テスト構成とブロックを実行します
モジュールのライフサイクルの開始時に構成と実行ブロックが実行されます。モジュール、ウィジェット、またはアプリケーションがどのように機能するかを制御するための重要なロジックが含まれています。それらを他のコンポーネントと直接呼ぶことができないため、それらをテストするのは少し難しいです。同時に、彼らの役割が重要であるため、彼らは無視することはできません。次の構成および実行ブロックを検討してください:
angular.module('configAndRunBlocks', ['ngRoute']) .config(function ($routeProvider) { $routeProvider.when('/home', { templateUrl: 'home.html', controller: 'HomeController', resolve: { bootstrap: ['$q', function ($q) { return $q.when({ prop: 'value' }); }] } }) .when('/details/:id', { templateUrl: 'details.html', controller: 'DetailsController' }) .otherwise({ redirectTo: '/home' }); }) .run(function ($rootScope, messenger) { messenger.send('Bootstrapping application'); $rootScope.$on('$locationChangeStart', function (event, next, current) { messenger.send('Changing route to ' + next + ' from ' + current); }); });
テストプロバイダーの場合と同様に、構成をテストしてブロック内の機能を実行する前に、モジュールがロードされることを確認する必要があります。したがって、モジュールをロードするために空の噴射ブロックを使用します。次のコードスニペットは、上記のブロックで使用されている依存関係をシミュレートし、モジュールをロードします。
describe('config and run blocks', function () { var routeProvider, messenger; beforeEach(function () { module('ngRoute'); module(function ($provide, $routeProvider) { routeProvider = $routeProvider; spyOn(routeProvider, 'when').andCallThrough(); spyOn(routeProvider, 'otherwise').andCallThrough(); messenger = { send: jasmine.createSpy('send') }; $provide.value('messenger', messenger); }); module('configAndRunBlocks'); }); beforeEach(inject()); });この記事の登録ルートを後でテストするため、意図的に
オブジェクトをシミュレートしませんでした。モジュールが読み込まれ、構成と実行ブロックが実行されます。そのため、彼らの動作のテストを開始できます。構成ブロックはルートを登録するため、正しいルートを登録するかどうかを確認できます。予想されるルート数が登録されているかどうかをテストします。次のテストでは、構成ブロックの機能を検証します。
$routeProvider
describe('config block tests', function () { it('should have called registered 2 routes', function () { //Otherwise internally calls when. So, call count of when has to be 3 expect(routeProvider.when.callCount).toBe(3); }); it('should have registered a default route', function () { expect(routeProvider.otherwise).toHaveBeenCalled(); }); });
describe('run block tests', function () { var rootScope; beforeEach(inject(function ($rootScope) { rootScope = $rootScope; })); it('should send application bootstrap message', function () { expect(messenger.send).toHaveBeenCalled(); expect(messenger.send).toHaveBeenCalledWith("Bootstrapping application"); }); });(テストスコープイベント、ルーティング、解析ブロック、アニメーションのその後の説明は、スペースの制限によりここで省略されています。完全なテストコードの例については、元のGitHubリポジトリを参照してください)
を参照してください)
結論この記事を通して、過去2年間にAngularJSコードのテストで学んだテスト手法のほとんどを紹介します。これは終わりではありません。実際のアプリケーションのビジネスシナリオのテストを作成すると、詳細を学びます。 AngularJSコードのテストに関する十分な知識があることを願っています。なぜ待つのですか?私がこれまでに書いたコードのすべての行のテストを書いてください!
(元のテキストのFAQの部分も、スペースの制限のために省略されています)以上がAngularJSテスト:ブートストラップブロック、ルート、イベント、アニメーションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

JavaScript文字列置換法とFAQの詳細な説明 この記事では、javaScriptの文字列文字を置き換える2つの方法について説明します:内部JavaScriptコードとWebページの内部HTML。 JavaScriptコード内の文字列を交換します 最も直接的な方法は、置換()メソッドを使用することです。 str = str.replace( "find"、 "置換"); この方法は、最初の一致のみを置き換えます。すべての一致を置き換えるには、正規表現を使用して、グローバルフラグGを追加します。 str = str.replace(/fi

それで、あなたはここで、Ajaxと呼ばれるこのことについてすべてを学ぶ準備ができています。しかし、それは正確には何ですか? Ajaxという用語は、動的でインタラクティブなWebコンテンツを作成するために使用されるテクノロジーのゆるいグループ化を指します。 Ajaxという用語は、もともとJesse Jによって造られました

10の楽しいjQueryゲームプラグインして、あなたのウェブサイトをより魅力的にし、ユーザーの粘着性を高めます! Flashは依然としてカジュアルなWebゲームを開発するのに最適なソフトウェアですが、jQueryは驚くべき効果を生み出すこともできます。また、純粋なアクションフラッシュゲームに匹敵するものではありませんが、場合によってはブラウザで予期せぬ楽しみもできます。 jquery tic toeゲーム ゲームプログラミングの「Hello World」には、JQueryバージョンがあります。 ソースコード jQueryクレイジーワードコンポジションゲーム これは空白のゲームであり、単語の文脈を知らないために奇妙な結果を生み出すことができます。 ソースコード jquery鉱山の掃引ゲーム

記事では、JavaScriptライブラリの作成、公開、および維持について説明し、計画、開発、テスト、ドキュメント、およびプロモーション戦略に焦点を当てています。

このチュートリアルでは、jQueryを使用して魅惑的な視差の背景効果を作成する方法を示しています。 見事な視覚的な深さを作成するレイヤー画像を備えたヘッダーバナーを構築します。 更新されたプラグインは、jQuery 1.6.4以降で動作します。 ダウンロードしてください

Matter.jsは、JavaScriptで書かれた2D Rigid Body Physics Engineです。このライブラリは、ブラウザで2D物理学を簡単にシミュレートするのに役立ちます。剛体を作成し、質量、面積、密度などの物理的特性を割り当てる機能など、多くの機能を提供します。また、重力摩擦など、さまざまな種類の衝突や力をシミュレートすることもできます。 Matter.jsは、すべての主流ブラウザをサポートしています。さらに、タッチを検出し、応答性が高いため、モバイルデバイスに適しています。これらの機能はすべて、物理ベースの2Dゲームまたはシミュレーションを簡単に作成できるため、エンジンの使用方法を学ぶために時間をかける価値があります。このチュートリアルでは、このライブラリのインストールや使用法を含むこのライブラリの基本を取り上げ、

この記事では、JQueryとAjaxを使用して5秒ごとにDivのコンテンツを自動的に更新する方法を示しています。 この例は、RSSフィードからの最新のブログ投稿と、最後の更新タイムスタンプを取得して表示します。 読み込み画像はオプションです

この記事では、ブラウザでJavaScriptのパフォーマンスを最適化するための戦略について説明し、実行時間の短縮、ページの負荷速度への影響を最小限に抑えることに焦点を当てています。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

Dreamweaver Mac版
ビジュアル Web 開発ツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

ホットトピック









