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 断言模块实现功能的测试框架都支持它。例如:node.js 断言或Should.js