普段だとJSでそこまで複雑なロジックを書くことがあまりないので、テストフレームを使わないで画面でポチポチとテストを行ってきました。
最近、訳があり複雑なロジックのコードをテストする必要があったので以下の条件を満たすテストフレームワークについて調べてみました。
- ドキュメントが充実していること。
- テストフレームワークがシンプルであること。
- テストコードが複雑でないこと。
MOCHA
MOCHAとはNode.js上で動作するテストフレームワークです。
上記の条件のほか、カバレッジリポートの作成、ブラウザ経由でのテスト実施とかもサポートしています。
今回はシンプルにコマンドプロンプトでテストを行いたいと思います。
まずはコマンドプロンプトに以下のコマンドを入力して、npm経由でMOCHAをインストールします。
(Node.jsはインストール済みとします。)
npm install --global mocha
次に、テスト対象のコードと、テストコードを作成します。
説明するほど複雑でないので、テスト対象のコード、テストコードについては詳しく説明しません。
雰囲気でつかんでもらえればと思います。
class Service {
toFizzBuzz(num) {
let result = '';
if (num % 3 == 0) {
result += 'Fizz';
}
if (num % 5 == 0) {
result += 'Buzz';
}
return result;
}
}
const assert = require("assert");
const service = new Service ();
describe('Service', function () {
describe('#toFizzBuzz', function () {
it('入力値が3の場合(15の倍数を除く3の倍数の場合)', function () {
assert.equal(service.toFizzBuzz(3), 'Fizz');
});
it('入力値が5の場合(15の倍数を除く5の倍数の場合)', function () {
assert.equal(service.toFizzBuzz(5), 'Buzz');
});
it('入力値が15の場合(15の倍数の場合)', function () {
assert.equal(service.toFizzBuzz(15), 'FizzBuzz');
});
});
});
次にテストを実施します。
コマンドプロンプトからService.js(C:\develop\repos\js配下に存在するものとします。)を実行します。
テスト結果はこんな感じで表示されます。
長くなってしまったので説明しませんが、非同期の関数をテストする場合は少し注意が必要です。
また、describe ,it の中でコールバック関数を呼び出すのですが、コールバック関数をアロー関数形式で定義するのは非推奨なようです。(場合によっては書けなくはないですが…)
気になった方は、調べてみてください。