NodejsテストフレームワークMochaの簡単な紹介
4634 ワード
宣言
私も絶えず学習と蓄積の中で、文章の中に不足と誤解があるところがあります.ご了承ください.みんなと一緒に進歩して、一緒に調和した学習環境を作りたいです.
テストの重要性
テスト?お兄さんは萌え萌えの開発です.なぜこのような粗雑な仕事をするのですか?多くの学生と私の考えは同じだと思いますが、テストは本当に必要ですか?答えは必要です.コードを書き終わったら、どれぐらいのバグがありますか?まずテストすれば、バグを事前に調べて、やり直しの回数を減らすことができます.私たちが書いたコードがバグがなくても、正常に運行できます.テストの第二の利点は来ました.効果的にコードの効率を向上させることができます.特にテストのフレームを使って、コードの書き方の習慣を改善できます.テストが無駄だと思ったら、大牛がなぜこれを開発したのかを考えてみてもいいです.
Mochaは何ですか
MochaはNode.jsとブラウザで実行する機能が豊富なJavaScriptテストのフレームワークで、非同期テストが簡単で面白いです.Mochaテストはシリアルで動作し、正確なレポートを柔軟に行いながら、捕獲されていない異常を正しいテストケースにマッピングすることができます.GitHubに信託する.ちょっと読めないようですが、公式サイトの教程に従って少し下を見てください.
インストール
NPMグローバルインストール
詳細はdescribeとitです
describeブロックは「テストキット」と呼ばれ、関連テストのセットを表しています.これは関数です.最初のパラメータはテストキットの名前です.二つ目のパラメータは実際に実行される関数です.
itブロックは「テストケース」と呼ばれ、単独のテストを表し、テストの最小単位です.これも関数です.最初のパラメータはテストケースの名前です.2番目のパラメータは実際に実行される関数です.
テストスクリプトには1つ以上のdescribeブロックが含まれていなければなりません.各describeブロックは1つ以上のitブロックを含むべきです.
非同期テスト
非同期関数が発生した場合は、非同期テストが必要です.done関数が実行された後に、このテストケースが完了します.
そのデフォルトの「BDD」式インターフェースは、mochaがフックbefore()、after()、beforeEach()、およびafterEach()を提供します.これらは前提条件を設定し、テスト後に清掃するために使うべきです.
並べ替えテストはテストセットまたはテストケースが一つだけ実行され、他はスキップされます.以下のテスト用例の集合のように:
Only関数とは対照的に、skyp関数は、現在のテストケースセットまたはテストケースをmochaシステムに無視させ、すべてのskypによるテストケースをPendingとして報告する.
矢印関数をMochaに渡すことを奨励しません.Lambands語法は
いくつかの一般的なテスト方法を紹介しましたが、まだたくさんのテスト方法があります.興味があればMocha公式サイトを見に行ってもいいです.私もこの文書をどんどん更新します.
参照
Mocha公式サイトleoleocs阮一峰
私も絶えず学習と蓄積の中で、文章の中に不足と誤解があるところがあります.ご了承ください.みんなと一緒に進歩して、一緒に調和した学習環境を作りたいです.
テストの重要性
テスト?お兄さんは萌え萌えの開発です.なぜこのような粗雑な仕事をするのですか?多くの学生と私の考えは同じだと思いますが、テストは本当に必要ですか?答えは必要です.コードを書き終わったら、どれぐらいのバグがありますか?まずテストすれば、バグを事前に調べて、やり直しの回数を減らすことができます.私たちが書いたコードがバグがなくても、正常に運行できます.テストの第二の利点は来ました.効果的にコードの効率を向上させることができます.特にテストのフレームを使って、コードの書き方の習慣を改善できます.テストが無駄だと思ったら、大牛がなぜこれを開発したのかを考えてみてもいいです.
Mochaは何ですか
MochaはNode.jsとブラウザで実行する機能が豊富なJavaScriptテストのフレームワークで、非同期テストが簡単で面白いです.Mochaテストはシリアルで動作し、正確なレポートを柔軟に行いながら、捕獲されていない異常を正しいテストケースにマッピングすることができます.GitHubに信託する.ちょっと読めないようですが、公式サイトの教程に従って少し下を見てください.
インストール
NPMグローバルインストール
$ npm install --global mocha
プロジェクトに単独でインストールする $ npm install --save-dev mocha
入門 $ mkdir test
$ $EDITOR test/test.js
test.jsに記入する var assert = require('assert');
describe('Array', function() {
describe('#indexOf()', function() {
it('should return -1 when the value is not present', function() {
assert.equal([1,2,3].indexOf(4), -1);
});
});
});
直接mochaを入力してテスト結果を確認します. $ mocha
Array
#indexOf()
✓ should return -1 when the value is not present
1 passing (6ms)
これはテストケースが通るかどうかを判定するためのもので、デフォルトではnodejsのクラスメイトライブラリを使うことができます.同時に、Mochaは私達が異なる断言ライブラリを使うことを支持しています. 1 shuld.js BDD style shown throughot these docs(BDDモードで、本ドキュメントで使うのは全部この断定ライブラリです) 2 better-astert c-style self-documenting astert(C-モデルでの断定ライブラリ)(C-exstpepepepepepepeexstexstststexstexstststextrtrtrtrext))のextrtrextrextrtrtre e e extrexxtrextre e e e e-extrextrextrextrexxxxxxxtrextrexxthe extenseble BDD asterion toolkit 5 chai expect()astert()and shound style astertions詳細はdescribeとitです
describeブロックは「テストキット」と呼ばれ、関連テストのセットを表しています.これは関数です.最初のパラメータはテストキットの名前です.二つ目のパラメータは実際に実行される関数です.
itブロックは「テストケース」と呼ばれ、単独のテストを表し、テストの最小単位です.これも関数です.最初のパラメータはテストケースの名前です.2番目のパラメータは実際に実行される関数です.
テストスクリプトには1つ以上のdescribeブロックが含まれていなければなりません.各describeブロックは1つ以上のitブロックを含むべきです.
非同期テスト
非同期関数が発生した場合は、非同期テストが必要です.done関数が実行された後に、このテストケースが完了します.
describe('User', function() {
describe('#save()', function() {
it('should save without error', function(done) {
var user = new User('Luna');
user.save(function(err) {
if (err) done(err);
else done(); // Mocha
});
});
});
});
Hook(かぎ)そのデフォルトの「BDD」式インターフェースは、mochaがフックbefore()、after()、beforeEach()、およびafterEach()を提供します.これらは前提条件を設定し、テスト後に清掃するために使うべきです.
describe('hooks', function() {
before(function() {
// runs before all tests in this block
});
after(function() {
// runs after all tests in this block
});
beforeEach(function() {
// runs before each test in this block
});
afterEach(function() {
// runs after each test in this block
});
// test cases
});
Exclusive Tests(列其テスト)並べ替えテストはテストセットまたはテストケースが一つだけ実行され、他はスキップされます.以下のテスト用例の集合のように:
describe('Array', function() {
describe.only('#indexOf()', function() {
// ...
});
//
describe('#ingored()', function() {
// ...
});
});
Inclusive Tests(テストを含む)Only関数とは対照的に、skyp関数は、現在のテストケースセットまたはテストケースをmochaシステムに無視させ、すべてのskypによるテストケースをPendingとして報告する.
describe('Array', function() {
// ingore
describe.skip('#indexOf()', function() {
// ...
});
//
describe('#indexOf()', function() {
// ...
});
});
describe('Array', function() {
describe('#indexOf()', function() {
// ingore
it.skip('should return -1 unless present', function() {
// ...
});
//
it('should return the index when present', function() {
// ...
});
});
});
ARROW FNCTIONS(矢印関数)矢印関数をMochaに渡すことを奨励しません.Lambands語法は
this
と結合されていて、Mochaコンテキストにアクセスできません.たとえば、以下のコードは失敗します.describe('my suite', () => {
it('my test', () => {
// should set the timeout of this test to 1000 ms; instead will fail
this.timeout(1000);
assert.ok(true);
});
});
締め括りをつけるいくつかの一般的なテスト方法を紹介しましたが、まだたくさんのテスト方法があります.興味があればMocha公式サイトを見に行ってもいいです.私もこの文書をどんどん更新します.
参照
Mocha公式サイトleoleocs阮一峰