在 JavaScript 中实现断言并不困难:
assert = function(expression,errorMessage){
if (!expression){
errorMessage = errorMessage || "(no msg)";
throw new Error("assert failed: "+errorMessage);
}
return true;
};
但是,使用此版本的断言很烦人,因为您必须为每个测试用例提供有意义的错误消息:
var types = {isNumber:function(x){return typeof x === "number" && isFinite(x)}}
assert(types.isNumber(1)===true,"types.isNumber(1)===true");
assert(types.isNumber(NaN)===false,"types.isNumber(NaN)===false");
我的问题是,有没有一种方法可以实现断言函数,使其只需要一个表达式,并且如果不满足该表达式,它可以返回有意义的错误消息?喜欢:
assert(SOMETHING_that_is_not_true); // throw Error: SOMETHINGELSE that refers to this particular assertion
assert(SOMETHING_that_is_not_true2); // throw Error: SOMETHINGELSE2 that refers to this different assertion
最佳答案
每个断言的代码比简单的表达式多一点,但是这样怎么样?
assert = function(expression){
if (!expression()){
errorMessage = expression.toString() || "(no msg)";
throw new Error("assert failed: "+errorMessage);
}
return true;
};
assert(function() { return 'b' == 'a' });
关于javascript - 一个断言函数,不需要您输入错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26552197/