キーポイント
-
同期関数のように、
- 非同期関数にはテストが必要です。 Qunitは、特に非同期コードをテストするためのメソッドを提供します。
QUnit.asyncTest()
- 他の2つの方法と組み合わせて使用する必要があります。
QUnit.asyncTest()
は、テストを停止した後、実行の実行を開始または再開するために使用されますが、QUnit.start()
は、テストランナーが継続する前に待機する必要があるQUnit.stop()
呼び出しの数を増やします。QUnit.start()
QUnit.stop()
このチュートリアルは、これらの方法を実際に使用する方法の例を示しています。これは、パラメーターのセットの最大値を非同期的に計算する関数をテストするためにQUnit.start()
、 、 - を使用する方法を示しています。
QUnit.start()
QUnit.stop()
このチュートリアルでは、Ajax操作の非同期コードをテストするとき、サーバーに潜在的なエラーがある可能性があるため、サーバーが返した実際のデータまたは結果に依存しないことを推奨しています。代わりに、jquery mockjaxやsinon.jsなどのライブラリを使用してAjaxリクエストをシミュレートすることをお勧めします。QUnit.asyncTest()
- 数週間前、私はQunitを手に入れるというタイトルの記事を公開し、単体テストの主な概念とQunitを使用してJavaScriptコードをテストする方法について議論しました。その投稿では、フレームワークによって提供される主張と、コードを同期してテストする方法に焦点を当てました。ただし、実際のケースについて議論したい場合は、非同期機能について話すことを避けることはできません。同期関数と同様に、非同期関数には注意が必要で、さらに多くのテストが必要です。この投稿では、Qunitを使用して非同期コードをテストする方法を教えます。利用可能なアサーション方法を覚えていない場合、または私の記事を完全に見逃した場合は、Qunitを始めましょう。この記事で説明されている資料は、この記事の前提条件です。
Qunitを使用して非同期テストを作成します
JavaScriptに記載されているすべての非自明なプロジェクトには、非同期関数が含まれています。特定の時間後に特定の操作を実行し、サーバーからデータを取得し、サーバーにデータを送信するために使用されます。 Qunitは、非同期コードをテストすることを目的とすると呼ばれるメソッドを提供します。この方法の署名は次のとおりです
パラメーターはQUnit.asyncTest()
と同じ意味を持っていますが、便利なため、ここで報告します。
-
name
:作成されたテストを識別するのに役立つ文字列。 -
testFunction
:フレームワークが実行されるというアサーションを含む関数。フレームワークは、すべてのQunitのアサーション方法を公開するこの関数にパラメーターを渡します。
と同じパラメーターを受け入れるという事実は、誤解を招く可能性があります。原則は同じであると思うかもしれません。非同期関数をテストするためにしなければならないことは、QUnit.test()
に呼び出しをQUnit.asyncTest()
に置き換えることです。そんなに速くない!その作業を達成するには、QUnit.test()
を他の2つの方法と組み合わせて使用する必要があります。それらについてもっと学びましょう。 QUnit.asyncTest()
QUnit.start()
QUnit.stop()
および
QUnit.start()
QunitがQUnit.stop()
を使用して作成されたテストを実行すると、テスト実行プログラムを自動的に停止します。次に、アサーション
を含む関数呼び出しを待ちます。 の目的は、テストが停止した後に実行の実行を開始または再開することです。このメソッドは、整数をその唯一のオプションパラメーターQUnit.asyncTest()
として受け入れ、複数のQUnit.start()
呼び出しを1つのQUnit.start()
にマージします。テストは、メソッドを使用して停止できます。
呼び出しの数を増やします。このメソッドは、フレームワークが待つ必要があるQUnit.start()
テストランナーが継続する前に待つ必要があるQUnit.stop()
の追加呼び出しの数を指定する唯一のオプションパラメーターとして整数を受け入れます。そのデフォルト値は1です。理解するのは少し難しいですね。対応するメソッドを含むメソッド定義は、混乱のように聞こえます。残念ながら、それはまさに彼らがしていることです。これらの概念を明確にするために私が知っている最善の方法は、特定の使用例を提供することです。
すべてのコンテンツを統合QUnit.start()
QUnit.start()
を開始する記事で開発された関数の1つを使用した簡単な例から始めましょう。この関数は、任意の数のパラメーターを使用し、最大値を返します。この関数のコードは次のとおりです さて、この関数は通常、非常に大きなパラメーターセットで実行されるとしましょう。結果が計算されるまで、ユーザーのブラウザがブロックされないようにしたいと考えています。これを行うには、
に遅延値が0のコールを配置します。非同期テスト関数に使用されるコード(max()
の使用を感じるようにする必要があります)は次のとおりです。
QUnit.asyncTest(name, testFunction)上記のコードでは、
のコールバックとしてmax()
関数への呼び出しをラップしました。アサーションをwindow.setTimeout()
で実行した後、テストランナーが実行を再開できるようにmax()
メソッドを呼び出します。このメソッドの呼び出しを避けた場合、テストランナーは立ち往生し、テストは惨めに失敗します(実際にテストは一時停止され、他に何もしません。前の例は、同期の対応物と非常によく似ているため、理解しやすいはずです。ただし、1つの状況だけでテストしても、コードを私たちに納得させません。さらに、QUnit.start()
の実際の適用を見る機会はありませんでした。この問題を解決するために、前の投稿で見たすべてのアサーションをQUnit.stop()
に渡された関数に実装します。完全なコードは次のようになります:QUnit.asyncTest()
function max() { var max = -Infinity; for (var i = 0; i < arguments.length; i++) { if (arguments[i] > max) { max = arguments[i]; } } return max; }テストでは、Qunitを始める際に議論したように、実行されると予想されるアサーションの数を設定します。次に、この関数は
メソッドを呼び出します。これは、テストで4つの非同期呼び出しを実行したために必要です。 QUnit.stop()
を使用すると、フレームワークは呼び出しのみを待ちますQUnit.asyncTest()
。呼び出しを省略し、さらに3つの呼び出しを指定すると、QUnit.start()
にさらに3つの呼び出しが行われると、予想されるアサーションの数が実行されたアサーションの数とは異なるため、テストが失敗します。 QUnit.stop()
への呼び出しを含むコードのライブデモを以下に示し、JSBINとして提供します。 QUnit.start()
expect()
を使用した非同期テスト このセクションでは、AJAX操作を実行しない非同期コードの例を見てきました。ただし、通常、サーバーからデータをロードするか、データを送信する必要があります。これが発生した場合、サーバーが返した実際のデータや結果に頼らない方が良い場合があります。この問題を回避するには、Ajaxリクエストをシミュレートする必要があります。これを行うには、Jquery Mockjax、Sinon.js、またはニーズに合ったその他のライブラリを使用できます。
結論
このチュートリアルでは、非同期関数のテストを作成する方法を学びました。まず、メソッドを使用して非同期コードを含むテストを宣言する方法について説明します。次に、他の2つのメソッドと
の存在を理解します。これは、を使用してテストを作成するときに使用する必要があります。最後に、2つのテストを開発して、これらのメソッドがどのように連携するかを示すことにより、獲得した知識を実践します。このチュートリアルで説明されているトピックを使用して、JavaScriptで記述できるコードをテストするために必要なすべての機能があります。あなたがこのフレームワークについてどう思うか、そしてあなたがあなたのプロジェクトでそれを使用することを検討するかどうかを知りたいです。 QUnit.asyncTest()
QUnit.start()
QUnit.stop()
Qunit QUnit.asyncTest()
非同期コードとは何ですか?それをテストすることが重要なのはなぜですか?
Asyncコードとは、重複する期間に開始、実行、完了できる操作を指します。これは、複数のことが同時に起こることを可能にするプログラミングの方法です。これは、多くのI/O操作を必要とするアプリケーションや、サーバーからデータを取得するなどのタスクを必要とするアプリケーションで特に役立ちます。非同期コードのテストは、コードのすべての部分が同時に実行されている場合でも、正しく実行されることを保証するのに役立つため重要です。これは、異なるコードパーツの重複した実行によって引き起こされる可能性のある潜在的な問題を特定するのに役立ちます。
Qunitは非同期コードのテストにどのように役立ちますか?
Qunitは、強力で使いやすいJavaScriptユニットテストフレームワークです。非同期コードを含む一般的なJavaScriptコードをテストできます。 Qunitは、非同期コードのテストを簡単にする「非同期」ユーティリティ関数を提供します。この関数は、非同期コードが実行された後にテスト実行プログラムを一時停止し、復元します。これにより、テストが非同期コードの動作を正確に反映します。
Qunitで「非同期」関数を使用して非同期コードをテストする方法は?
テスト関数で呼び出すことにより、Qunitで「非同期」関数を使用します。これにより、コールバック関数が返されます。これは、非同期操作が完了した後に呼び出す必要があります。基本的な例は次のとおりです
この例では、「完了」コールバックが呼び出されるまでテスト実行プログラムを一時停止するために「非同期」関数を使用します。QUnit.asyncTest(name, testFunction)
...(残りのFAQの質問と回答は、元のテキストに従ってコンテンツの一貫性を保つために同様に書き直すことができますが、文の構造と単語の使用は完全にコピーを避けるために変更されました。
以上がQunitで非同期コードをテストする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

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

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

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

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

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

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

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


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

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

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。
