gpt4 book ai didi

javascript - 比较 Chai 中的错误

转载 作者:行者123 更新时间:2023-12-03 08:30:40 25 4
gpt4 key购买 nike

我需要在 ES6 中实现我自己的错误类(使用节点 v4):

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 对象具有不同的消息,并且我想测试检查深度相等的情况。有什么办法可以使用给定的工具解决这个问题吗?

最佳答案

您的代码有两个突出问题:

  1. 您没有正确使用assert.throw。您应该将构造函数传递给预期异常作为第二个参数,并将正则表达式或字符串作为第三个参数。如果第三个参数是字符串,Chai 将检查异常消息中是否存在该字符串。如果是正则表达式,则会测试消息是否与表达式匹配。

  2. 您的异常应该有一个返回消息的 toString 方法,否则 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$/);
});

关于javascript - 比较 Chai 中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33352191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com