nodeunit APIの以下のメソッド
throws(block, [error], [message]) - Expects block to throw an error.
[error] パラメータの関数を受け入れることができます。この関数は引数を取り、アサーションの成功または失敗を示すためにactual
戻ります。true|false
Error
このように、あるメソッドが をスローし、そのエラーに特定のメッセージが含まれていることをアサートしたい場合は、次のようなテストを作成する必要があります。
test.throws(foo, function(err) {
return (err instanceof Error) && /message to validate/.test(err)
}, 'assertion message');
例:
function MyError(msg) {
this.message = msg;
}
MyError.prototype = Error.prototype;
function foo() {
throw new MyError('message to validate');
}
exports.testFooOk = function(test) {
test.throws(foo, function(actual) {
return (actual instanceof MyError) && /message to validate/.test(actual)
}, 'Assertion message');
test.done();
};
exports.testFooFail = function(test) {
test.throws(foo, function(actual) {
return (actual instanceof MyError) && /another message/.test(actual)
}, 'Assertion message');
test.done();
};
出力:
✔ testFooOk
✖ testFooFail
実際、node.js assert モジュールの関数を実装するテスト フレームワークはすべて、それをサポートしています。例: node.js assertまたはShould.js