以下:
<!-- load your test files here -->
スクリプトを追加したら、選択したブラウザにテストランナーページをロードできます。
テストを実行すると、テスト結果は次のようになります。
失敗したテストがどのように見えるかを見てみましょう。
テストのラインで:
番号0を1に置き換えます。これにより、アレイの長さが期待値と一致しなくなるため、テストが失敗します。
assert.equal(arr.length, 0);
テストの利点の1つは、バグをより早く見つけるのに役立つことですが、このエラーはその点であまり役に立ちません。ただし、修正できます。
そうなことのような主張にメッセージを追加できます:
テストを再実行すると、デフォルトの代わりにカスタムメッセージが表示されます。
アサーションをそのままに切り替えましょう。1を0に置き換え、テストをもう一度実行して、渡すことを確認してください。
まとめるassert.equal(arr.length, 1, 'Array length was not 0');
これまでのところ、かなり簡単な例を見てきました。学んだことを実践に入れて、より現実的なコードをどのようにテストするかを見てみましょう。
CSSクラスを要素に追加する関数は次のとおりです。これは、新しいファイルjs/classname.js。に移動する必要があります
もう少し面白くするために、そのクラスが要素のクラス名プロパティに存在しない場合にのみ、新しいクラスを追加しました。コードを記述します。しかし、テスト駆動型開発は複雑なトピックであり、今のところ、テストの作成に集中したいだけです。
開始するには、単体テストの背後にある基本的なアイデアを思い出しましょう。関数に特定の入力を与え、その後、機能が予想どおりに動作することを確認します。では、この関数の入力と動作は何ですか?要素とクラス名が与えられた
function addClass(el, newClass) { if(el.className.indexOf(newClass) === -1) { el.className += newClass; } }
これらのケースを2つのテストに変換しましょう。テストディレクトリで、新しいファイルclassnameTest.jsを作成し、次を追加します。
<!-- load your test files here -->
しかし、待って、テスト関数はどこにありますか?さて、2番目のパラメーターを省略すると、Mochaはこれらのテストをテスト結果の保留中の 最初のテストを実装して続行しましょう。
このテストでは、要素変数を作成し、文字列テストクラス(追加する新しいクラス)とともに、AddClass関数のパラメーターとして渡します。次に、クラスがアサーションを使用して値に含まれていることを確認します。
再び、私たちは最初のアイデアから行きました - 要素とクラス名を考えると、それはクラスリストに追加する必要があります - そして、それをかなり簡単な方法でコードに翻訳しました。
この関数はDOM要素で動作するように設計されていますが、ここではプレーンJSオブジェクトを使用しています。この方法でJavaScriptの動的な性質を利用して、テストを簡素化できる場合があります。これを行わなかった場合、実際の要素を作成する必要があり、テストコードを複雑にします。追加の利点として、DOMを使用しないため、node.js内でこのテストを実行することもできます。
CodepenのSitePoint(@SitePoint)でMocha(1)を使用したペン単位テストを参照してください。
しかし、ぶらぶらしてください!私は実際にあなたを少しだましました。この関数には、考慮していない3番目の動作があります。関数にはバグもあります - かなり深刻なものです。 3行の関数ですが、気づきましたか? バグをボーナスとして公開する3番目の動作のもう1つのテストを書きましょう。
CodepenのSitePoint(@SitePoint)でMocha(3)を使用したペン単位テストを参照してください。
そして、これが固定関数と合格テストを備えた最終的なCodepenです。
を理解することはできます。
あなたが見ることができるように、テストは合格します
ご覧のとおり、テストは複雑でも困難である必要もありません。 JavaScriptアプリを作成する他の側面と同様に、繰り返される基本的なパターンがいくつかあります。それらに精通したら、何度も何度も使用し続けることができます。
assert.equal(arr.length, 0);
2番目のテストが実装された別のCodepenです
CodepenのSitePoint(@SitePoint)でMocha(2)を使用したペン単位テストを参照してください。<!-- load your test files here -->
assert.equal(arr.length, 0);
assert.equal(arr.length, 1, 'Array length was not 0');
function addClass(el, newClass) {
if(el.className.indexOf(newClass) === -1) {
el.className += newClass;
}
}
より複雑なシステムのテスト
AJAX、データベース、その他の「外部」のものに対処する方法は?これ以上の学習を続けたい場合は、無料のJavaScriptユニットテストQuickStartシリーズを作成しました。この記事が便利だと思った場合は、ここで絶対にチェックしてください。
MochaとChaiを使用したJavaScriptのユニットテストに関するよくある質問 JavaScriptで単体テストのためにMochaとChaiをインストールするにはどうすればよいですか?
MochaとChaiをインストールするには、システムにnode.jsとNPMをインストールする必要があります。これらを取得したら、NPMを使用してMochaとChaiをインストールできます。端末を開き、プロジェクトディレクトリに移動します。次に、次のコマンドを実行します。
このコマンドは、プロジェクトの作成者としてMochaとChaiをインストールします。 -save-devフラグは、Package.jsonファイルに開発依存関係としてこれらを追加するために使用されます。 MochaとChaiでは、テストファイルを作成し、テストケースを書き込むことが含まれます。簡単な例は次のとおりです。
var expect = require( 'chai')。文字列内のキャラクターの数 '、function(){
expect(' hello ')。to.have.lengthof(5);
この例は、関連するテストをグループ化するテストスイートであり、テストケースです。 CHAIからの予想機能は、予想される出力をアサートするために使用されます。
MoChaテストを実行するにはどうすればよいですか?
Mochaテストを実行し、端末のプロジェクトディレクトリに移動して実行して実行します。次のコマンド:
./ node_modules/.bin/mocha
このコマンドは、node_modulesフォルダーにインストールされているmochaバイナリを実行します。このコマンドをMochaとして単純に実行したい場合は、NPMインストール-G Mochaを使用してMochaをグローバルにインストールできます。スタイル - 予想、予想、および主張する必要があります。 Sefs Styleは、チェーンを開始するためにプロパティを使用して各オブジェクトを拡張します。期待スタイルは、より伝統的な機能ベースのアプローチを提供します。アサートスタイルは、});
Mochaは、前、後に、前に、そしてテスト後に前提条件を設定してクリーンアップするために使用できるようにフックを提供します。例は次のとおりです。
describe( 'hooks'、function(){
before(function(){
//このブロックでの最初のテストの前に1回実行
});
after(function(){
//このブロックでの最後のテストの後に1回実行
}このブロックでの各テスト
});
aftereach(function(){
//このブロックで各テストの後に実行
};
});
>
Chaiで例外をテストするにはどうすればよいですか?
expect(function(){throw new error( '誤った値');})。 value ');
});
この例では、渡された関数はエラーをスローすることを期待します。スローアサーションは、関数が「間違った値」というメッセージでエラーをスローすることを主張するために使用されます。スパイ、スタブ、モック、モカとチャイのモックは、sinon.jsのようなライブラリを使用できます。 Sinon.jsは、これらの機能を提供するためにMochaとChaiと簡単に統合できます。 、ニャンなど。テストを実行するときに、 - レポーターオプションで使用するレポーターを指定できます。たとえば、Mocha - Reporter Nyan。
Chaiでテストをより読みやすくするにはどうすればよいですか?たとえば、expect(myvar).to.be.true;を書く代わりに、(myvar).to.be.true ;.を書くことができます。これにより、テストがより自然で理解しやすくなります。
以上がMochaとChaiを使用してJavaScriptをユニットテストしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。