テスト用例:mocha,shound,istanbal


目標:lesson 6プロジェクトを作成し、コードを作成する.main.js:fibonacci関数があります.この関数の定義は    int fibonacci(int n)−n==0の場合、0を返します.n==1の場合は、1を返します.-n>1の場合、fibonacci(n) === fibonacci(n-1) + fibonacci(n-2)に戻る.nは10より大きくしてはいけません.さもなければ、Node.jsの計算性能はそんなに強くないからです.nも0より小さくしてはいけません.さもなければ投げ間違えます.意味がないからです.n数字でないときは、間違えて投げます.
test/main.test.js:main関数をテストし、行のカバー率と枝のカバー率を100%にします.
知識点:1.テストフレームを使ってmochaを勉強する:http://mochajs.org/2.学習使用断言ライブラリshound:https://github.com/tj/should.js
まずfibonacci(10) === 55を実行してpackage.jsonを作成します.次に、main.jsファイルを作成して、fibonacci関数を作成します.

    var fibonacci = function (n) {
      if (n === 0) {
        return 0;
      }
      if (n === 1) {
        return 1;
      }
      return fibonacci(n-1) + fibonacci(n-2);
    };

    if (require.main === module) {
      //         main.js,     
      //    main.js       require,       。
      var n = Number(process.argv[2]);
      console.log('fibonacci(' + n + ') is', fibonacci(n));
    }
実行
node mail.js 10`![]http://i.imgur.com/zTevhDq.pngこれからテストドライブの開発を開始します.簡単な実現が完了しました.簡単なテストを行いましょう.私たちはまずメール・jsの中のfibonacciを暴露します.一言つけ加える
`exports.fibonacci=fibonacci`はその後test/mail.test.jsの中で私達のmail.jsを引用して、簡単なテストを始めます.

    // file: test/main.test.js
    var main = require('../main');
    var should = require('should');

    describe('test/main.test.js', function () {
      it('should equal 55 when n === 10', function () {
    main.fibonacci(10).should.equal(55);
      });
    });
グローバルなmochaをインストールする:
npm install mocha-g`
`g`と非
`g`の違いは、設置位置の違いです.gはglobalという意味です.入れないなら、モデルをインストールします.あなたのプロジェクトディレクトリの下にあります.追加すると、このmochaはグローバルにインストールされています.mochaに実行可能なコマンドがあれば、このコマンドは自動的にあなたのシステムのPATHのどこかに追加されます.そして実行します
モチャ`[]http://i.imgur.com/5wLaqy1.png)のうち
`describe`の文字列は、あなたが測定する主体が何かを記述します.
‘it’では、具体的なcase内容を説明します.ショルダーモジュールに導入されたのは、断言ライブラリであり、mochaはテストフレームである.
たとえば、一つの数が3より大きいかどうかをテストすると、
`(5).ショルダーd.above(3)`.文字列が特定のプレフィックスを持っているかどうかをテストします.
‘foobaar’.shuld.startWith(‘foo’)`.この時もう一度fibonacci関数のいくつかの要求を見ます.
*n==0で0を返します.n==1の場合は、1を返します.
*n>1の場合、‘fibonacci(n)==fibonacci(n-1)+fibonacci(n-2)`,例えば‘fibonacci(10)==55`.
*nは10より大きくしてはいけません.さもなければミスをします.Node.jsの計算性能はそんなに強くないからです.
*nも0より小さくてはいけません.さもなければ間違いを投げます.意味がないからです.
*nは数字ではない場合、間違って投げます.
上記の要求に基づいて、main.test.jsを更新します.

    var main = require('../main');
    var should = require('should');

    describe('test/main.test.js', function () {
      it('should equal 0 when n === 0', function () {
    main.fibonacci(0).should.equal(0);
      });

      it('should equal 1 when n === 1', function () {
    main.fibonacci(1).should.equal(1);
      });

      it('should equal 55 when n === 10', function () {
    main.fibonacci(10).should.equal(55);
      });

      it('should throw when n > 10', function () {
    (function () {
      main.fibonacci(11);
    }).should.throw('n should <= 10');
      });

      it('should throw when n < 0', function () {
    (function () {
      main.fibonacci(-1);
    }).should.throw('n should >= 0');
      });

      it('should throw when n isnt Number', function () {
    (function () {
      main.fibonacci('  ');
    }).should.throw('n should be a Number');
      });
    });
この時もう一度走ってみたら、3つのcaseがあったのです.
この時にメール・jsのfibonacci関数を更新します.以下の通りです.

    var fibonacci = function (n) {
      if (typeof n !== 'number') {
    throw new Error('n should be a Number');
      }
      if (n < 0) {
    throw new Error('n should >= 0')
      }
      if (n > 10) {
    throw new Error('n should <= 10');
      }
      if (n === 0) {
    return 0;
      }
      if (n === 1) {
    return 1;
      }

      return fibonacci(n-1) + fibonacci(n-2);
    };
mochaをもう一回実行すれば、全部通過します.これはテストドライブの開発です.