Mocha.js を使用した自動 Javascript テスト
誰もが知っているように、コードにはエラーが発生しやすく、特定のワークフローが場合によっては正常に機能することがわかっていても、他のワークフローを忘れてしまう可能性が高くなります。
簡単に言えば、コードを手動でテストすると、何かを見落とす可能性があると言えます。たとえば、func1() と func2() という 2 つの関数があり、func1() が次のような場合に機能することがわかっているとします。 re はすでに testing が定義されていますが、func2() が機能しないことがわかります。次に、func2() を修正しましたが、func2() に変更を加えた後、func1() がプロセス全体に適用されているかどうかを確認するのを忘れていました。 このプロセスではエラーが発生する可能性があり、通常はこれが数回発生します。
ここで、テストを手動で実行するのはあまり理想的な選択肢ではないことがわかっているため、作成したコードに加えて、別に作成したテストを実行することをお勧めします。これはいわゆる 自動テストです。
このチュートリアルでは、JavaScript での自動テストに Mocha を使用する方法を検討します。
最初のステップは、コード内で Mocha を同時に使用できるようにすることです。これを行うには、mocha.js が提供する CDN リンクを利用できます。このチュートリアルでは、Mocha で使用される可能性のあるさまざまな関数の正確な動作を確認する場合に適した Chai.js と Expect.js も使用します。書かれた。
ここには、index.html ファイルにインポートする必要があるすべての CDN があります。
Expect.js
リーリーChai.js
リーリーモカ.js
リーリー次のステップでは、お気に入りの IDE またはコード エディターの単純なプロジェクト ディレクトリに 3 つのファイルを作成します。
- index.html
- index.js
- test.js
以下に示す コマンドを使用することもできます。
リーリー注 - touch コマンドはローカル マシンでは実行できない場合があります。その場合は、代わりに vi コマンドを使用してください。
index.html
すべてのファイルを作成したので、コードを記述します。 index.html ファイルを開き、次の行を貼り付けます。
###例### リーリーイラスト
上記の HTML コードでは、
Mocha、Chai、Expect などのすべての依存関係を CDN 経由でインポートしました。 次に、2 つの異なる
jsファイル、つまり index.js と tests.js を同期順序でインポートしました。つまり、最初にindex .js ファイルが実行され、続いて window.mocha() と bdd を設定するスクリプトが実行されます。 以下に示すコード スニペットを考えてみましょう。
リーリー上記のコードの後で、
tests.jsファイルを呼び出し、Mocha のさまざまなメソッドを呼び出します。以下に示すコード スニペットを考えてみましょう。 リーリー 次に、Mocha を使用して自動化された方法でテストするためのいくつかの関数を作成します。以下に示す
index.jsコードを考えてみましょう。 リーリー 上記の関数は、2 つのパラメーターを受け取り、単純にそれら 2 つの数値の合計を応答で返す非常に単純な関数です。
test.js
ここからが興味深い部分です。自動テストを使用して、上記の機能が期待どおりに動作するかどうかをテストします。以下に示す test.js コードを考えてみましょう。
リーリー上記のコードでは、
index.htmlファイルを通じて Chai および Expect パッケージをインポートしました。 さらに、渡す最初のパラメータが選択した文字列である
describe関数を使用しています。次に、it() 関数を呼び出す匿名関数を作成します。この関数は、最初のパラメータとして文字列を受け取り、2 番目のパラメータとして匿名アロー関数を受け取ります。
expect関数を使用しています。この関数では、テストする実際の関数をパラメータとして呼び出し、deep.equal() メソッドを使用して等しいかどうかをチェックします。 ###出力### HTML コードを実行し、ブラウザでコードを開いた後は、すべてが期待どおりに動作するはずです。以下に示すようなテキストがブラウザに表示されるはずです。
リーリー2 番目の関数を追加しましょう
上の例では、
addNumbers という単純な JavaScript 関数をテストしました。それでは、別の関数を追加してみましょう。今回はアロー関数を使用します。以下に示すコードを考えてみましょう。
index.js リーリー test.js
次に、上記の関数の自動テストを
tests.jsファイルに記述してみましょう。以下に示すコード スニペットを考えてみましょう。
リーリー ###出力###HTML コードを実行すると、今度はブラウザーに 2 つの関数の名前が表示されます。 リーリー 関数が期待した出力を返さない場合はどうすればよいでしょうか?
自動テストを作成した 2 つの関数では、実際には正しい値が得られることが期待されていました。エラー値を返すように関数のコアロジックを変更したらどうなるでしょうか?
考虑 index.js 文件中存在一个名为 multiplyNumber 的函数。让我们对函数进行更改,以便它不会给出我们预期的输出。
乘数
let multiplyNumber = (a, b) => { return a * b; }
输出
现在,如果我们在浏览器中运行 HTML 代码,我们将在浏览器中得到以下输出。
multiplyNumber should be able to multiply two numbers and give proper result‣ AssertionError: expected 0.3333333333333333 to deeply equal 3
使用多个描述函数进行自动化测试
在上面的两个示例中,我们使用了单个 describe 函数和简单函数。现在假设我们想要使用一个函数来计算数字的幂。
考虑下面所示的index.js代码
function power(x, n) { let res = 1; for (let i = 0; i < n; i++) { res *= x; } return res; }
在上面的函数中,我们采用两个参数,然后将一个数字的幂提高到 n 倍。
测试.js
现在让我们为此函数编写一个自动化测试。
describe("power", function () { describe("raises x to power 2", function () { function checkPower(x) { let expected = x * x; it(`${x} in the power 2 is ${expected}`, function () { expect(power(x, 2)).to.deep.equal(expected); }); } for (let x = 1; x <= 5; x++) { checkPower(x); } }); });
我们可以看到,在自动化测试函数中,我们使用了嵌套的describe函数。在这里,我们检查在 index.js 中编写的 power() 函数是否按预期工作。
输出
power raises x to power 2 1 in the power 2 is 1‣ 2 in the power 2 is 4‣ 3 in the power 2 is 9‣ 4 in the power 2 is 16‣ 5 in the power 2 is 25
结论
在本教程中,我们通过示例解释了如何使用 Mocha.js 与 Chai.js 和 Expect.js 在 JavaScript 中执行自动化测试。
以上がMocha.js を使用した自動 Javascript テストの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック

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以降で動作します。 ダウンロードしてください

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

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

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