NodejsテストフレームワークMochaの簡単な紹介

4634 ワード

宣言
私も絶えず学習と蓄積の中で、文章の中に不足と誤解があるところがあります.ご了承ください.みんなと一緒に進歩して、一緒に調和した学習環境を作りたいです.
テストの重要性
  テスト?お兄さんは萌え萌えの開発です.なぜこのような粗雑な仕事をするのですか?多くの学生と私の考えは同じだと思いますが、テストは本当に必要ですか?答えは必要です.コードを書き終わったら、どれぐらいのバグがありますか?まずテストすれば、バグを事前に調べて、やり直しの回数を減らすことができます.私たちが書いたコードがバグがなくても、正常に運行できます.テストの第二の利点は来ました.効果的にコードの効率を向上させることができます.特にテストのフレームを使って、コードの書き方の習慣を改善できます.テストが無駄だと思ったら、大牛がなぜこれを開発したのかを考えてみてもいいです.
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阮一峰