Posted at

【JavaScript】power-assert使ってみた

More than 5 years have passed since last update.

詳しくはこちら

power-assert使ってみた - 東京Node学園 10時限目に参加してきました


power-assertの準備


npm install

プロジェクトのルートディレクトリにすでにpackage.jsonがあるとします.このとき,プロジェクトのルートディレクトリで以下のコマンドを実行します.

$ npm install power-assert grunt-espower --save-dev

すると,package.jsonは以下のように追記されるはずです.

 "devDependencies": {

"power-assert": "~0.1.2",
"grunt": "~0.4.1",
"grunt-espower": "~0.1.2"
}


Gruntfile.jsの準備

gruntのtaskによってpower-assert用のファイルを生成するため,Gruntfile.jsを以下のように記述します.

module.exports = function(grunt) {

var pkg = grunt.file.readJSON('package.json')
, taskName
;

grunt.initConfig({
espower: {
test: {
files: [
{
expand: true, //Enable dynamic expansion,
cwd: 'test/', //Src matches are relative to this path
src: ['**/*.js'], //Actual pattern(s) to match
dest: 'espowered/', //Destination path prefix
ext: '.js' //Dest filepaths will have this extension
}
]
}
}
});

for (taskName in pkg.devDependencies) {
if (taskName.substr(0, 6) == 'grunt-') {
grunt.loadNpmTasks(taskName);
}
}
};

これによって,testディレクトリ以下のテストファイルを基にしてespoweredディレクトリにpower-assert用のテストファイルが作成されるように設定できます.


テストを書く

以下のテストコードをtestディレクトリにpower_assert_example-test.jsという名前で保存します.

var assert = require('power-assert');

describe('Array', function(){
beforeEach(function(){
this.ary = [1, 2, 3];
});
describe('#indexOf()', function(){
it('should return index when the value is present', function(){
var zero = 0, two = 2;
assert(this.ary.indexOf(zero) === two);
})
})
});

以上で準備は完了です.


テストファイル生成と実行

gruntタスクを走らせてテストコードを生成します.

$ grunt espower:test

Running "espower:test" (espower) task

Done, without errors.

上記のように表示されればタスク実行が正常に完了しています.

テストを走らせてみます.

$ mocha espowered/power_assert_example-test.js

0 passing (6 ms)
1 failing

1) Array #indexOf() should return index when the value is present:
AssertionError: # (プロジェクトのルートディレクトリ)/test/power_assert_example-test.js:10

assert(this.ary.indexOf(zero) === two);
| | | | |
| | | | 2
| -1 0 false
[1,2,3]
(以下略)

assertの中身の情報が出力されていて,[1, 2, 3]というaryで呼び出したindexOfというメソッドの結果が-1になっていて右辺の2とは一致せずに失敗していることが分かります.