Node.jsのテストツールWhiskeyがよさげ
Node.jsのテストツールwhiskeyがよさげなのでメモ。
特徴
使い方
example/*のやつを見れば大体わかると思うけど、以下のような感じ。
初期化
example/init.js
var path = require('path'); var fs = require('fs'); var dirPath = path.join(process.cwd(), 'example/test-123456'); exports['init'] = function(callback) { fs.mkdir(dirPath, 0655, function(err) { callback(); }); };
以下のように-tiオプションで指定する。
$ whiskey -ti init.js --tests "sometest.js"
setUp/tearDown
xUnit系のテストツールを使ったことがある人にはおなじみのsetUp/tearDownは以下のような感じ。
var n = 0; exports['setUp'] = function(test, assert) { called = true; n++; test.finish(); }; exports['test_call'] = function(test, assert) { n++; test.finish(); }; exports['tearDown'] = function(test, assert) { assert.ok(called); assert.equal(n, 2); test.finish(); };
Assertの拡張
Assertに独自のメソッドを追加できます。
以下のように書いた上で、--custom-assert-module で指定すれば定義したメソッドを使用できます。
function assertThrow() { throw new Error('Assert thrown'); } function assertNoop() { } exports.assertThrow = assertThrow; exports.assertNoop = assertNoop;
$ whiskey --tests "sometest.js" --custom-assert-module /path/to/custom-assert-module
テストのスキップ
test.skip()を使用します。
exports['test_skip1'] = function(test, assert) { test.skip("some reason blah"); assert.ok(false); }; exports['test_skip2'] = function(test, assert) { assert.ok(true); setTimeout(function() { test.skip(); assert.equal(1, 3); }, 10); };
TAP出力
--test-reporterオプションを使用します。
$ whiskey --tests "sometest.js" --test-reporter tap
ただ残念なのが、TAP出力の際に行頭にスペースが入ってしまっているためにそのままだとproveでうまく扱えません。フィルタをかますなどして行頭のスペースを取り除けば問題ありません。
一応、forkしたリポジトリでは修正してありますが、本家のIssuesに上げておこうと思います。