比较 Chai 中的错误
Compare errors in Chai
我需要在 ES6(节点 v4)中实现我自己的错误 class:
class QueryObjectError {
constructor (message) {
this.message = message;
}
}
我有一部分代码抛出所述错误类型:
function myFunct () {
throw new QueryObjectError('a message');
}
我正在使用 Mocha 和 Chai 来测试该函数会抛出预期的错误和预期的消息:
it('is a test', function (done) {
var err = new QueryObjectError('abc');
assert.throw(myFunct, err);
done();
});
虽然 QueryObjectError
对象有不同的消息,但测试通过了,我想测试检查深度相等性的情况。有什么方法可以用给定的工具解决这个问题?
您的代码有两个突出问题:
您没有正确使用assert.throw
。您应该将构造函数作为第二个参数传递给预期的异常,并将正则表达式或字符串作为第三个参数传递。如果第三个参数是一个字符串,Chai 将检查该字符串是否存在于异常消息中。如果是正则表达式,会检测消息是否被正则表达式匹配。
你的异常应该有一个 toString
方法来 returns 消息,否则 Chai 将不知道如何检查消息。
这是一个显示失败和成功的示例:
import { assert } from "chai";
class QueryObjectError {
constructor (message) {
this.message = message;
}
toString() {
return this.message;
}
}
function myFunct () {
throw new QueryObjectError('a message');
}
it('is a test', function () {
assert.throw(myFunct, QueryObjectError, 'abc');
});
it('is another test', function () {
assert.throw(myFunct, QueryObjectError, /^a message$/);
});
我需要在 ES6(节点 v4)中实现我自己的错误 class:
class QueryObjectError {
constructor (message) {
this.message = message;
}
}
我有一部分代码抛出所述错误类型:
function myFunct () {
throw new QueryObjectError('a message');
}
我正在使用 Mocha 和 Chai 来测试该函数会抛出预期的错误和预期的消息:
it('is a test', function (done) {
var err = new QueryObjectError('abc');
assert.throw(myFunct, err);
done();
});
虽然 QueryObjectError
对象有不同的消息,但测试通过了,我想测试检查深度相等性的情况。有什么方法可以用给定的工具解决这个问题?
您的代码有两个突出问题:
您没有正确使用
assert.throw
。您应该将构造函数作为第二个参数传递给预期的异常,并将正则表达式或字符串作为第三个参数传递。如果第三个参数是一个字符串,Chai 将检查该字符串是否存在于异常消息中。如果是正则表达式,会检测消息是否被正则表达式匹配。你的异常应该有一个
toString
方法来 returns 消息,否则 Chai 将不知道如何检查消息。
这是一个显示失败和成功的示例:
import { assert } from "chai";
class QueryObjectError {
constructor (message) {
this.message = message;
}
toString() {
return this.message;
}
}
function myFunct () {
throw new QueryObjectError('a message');
}
it('is a test', function () {
assert.throw(myFunct, QueryObjectError, 'abc');
});
it('is another test', function () {
assert.throw(myFunct, QueryObjectError, /^a message$/);
});