Javascriptの単体テストを書く(power-assert)
はじめに
単体テストについてはE2Eを組む前段で用意してたことはあるのだけれど、真面目に書くことがなかったのでpower-assertを使ってテストコードを書くことに挑戦してみる。
参考
みんなのPowerAssert github.com
インストール
$ npm install mocha espower-loader intelli-espower-loader power-assert --save-dev
ディレクトリ構成
.
├── node_modules
├── package.json
├── src
│ └── Calculator.js
└── test
└── test.js
対象&テストコード
Calculator.js
module.exports = class Calculator {
constructor(name){
this.name = name;
}
plus(x, y){
return x + y;
}
minus(x, y){
return x - y;
}
divide(x, y){
return x / y;
}
};
test.js
const Calculator = require('../src/Calculator');
const calculator = new Calculator('riririusei99');
const assert = require('power-assert');
describe('Test plus', function(){
it('shoud return 3 when value is number', function(){
assert(calculator.plus(1,2) === 3);
});
it('【ERROR SAMPLE】shoud return "12"', function(){
assert(calculator.plus("1","2") === 12);
});
});
describe('Test minus', function(){
it('shoud return 3 when value is number', function(){
assert(calculator.minus(5,2) === 3);
});
it('shoud return -2 when value is number', function(){
assert(calculator.minus(3,5) === -2);
});
});
describe('Test devide', function(){
it('shuoud return 1 when value is number', function(){
assert(calculator.divide(5,5) === 1);
});
it('shuoud return error when 0 divide', function(){
assert(calculator.divide(5,0) === Infinity);
});
});
テスト実行
power-assertのREADMEを参考に実行する
$ node_modules/mocha/bin/mocha --require intelli-espower-loader test/test.js
こんな感じで出力される

おわりに
環境の準備は割とさっくりできた。
テストの書き方とかが大事なんだろうなぁというかんじなので、次回はもう少し複雑なコードに対してテストを書いてみるみたいなのをやってみたい。
CTFで作ったお遊びスクリプトとかがちょうど良さそう。