gpt4 book ai didi

javascript - 向Sinon 的spy.threw() 传递错误参数时,其行为不符合预期?

转载 作者:行者123 更新时间:2023-12-03 05:07:44 25 4
gpt4 key购买 nike

我正在使用 sinon.JS 编写简单的单元测试。被测试的代码有一些类型检查,这会抛出 TypeError:

Tx = class Tx {
constructor(date) {
if (!(date instanceof Date)) throw new TypeError();
this.date = date;
}
}

在我的 test.js 中,我使用 sinon 来测试当参数不是日期时 Tx 实例化是否失败:

describe('Tx', function() {
describe('#constructor', function() {
it('should fail when not passed a date as 1st param', function() {
var txSpy = sinon.spy(Tx.constructor);
try {
tx = new Tx(true);
} catch (e) {
// test success
console.log('Error: '+e)
}
}
}
}
result = txSpy.threw(new TypeError());
assert(result);

即使 catch 输出为“Error: TypeError”,断言也会失败;当传递错误类型的字符串描述(即“TypeError”,根据 the sinon API )时,会出现相同的结果。

有什么提示吗?预先感谢:)

最佳答案

您期望的 TypeError 实例并不是抛出的实例,尽管它们是同一类的实例。

在您链接的文档中,您会注意到,当使用 error 对象参数调用 .threw() 方法(并返回成功)时,error 对象是被抛出的对象,而不是同一类的另一个实例。

要检查所使用的异常类,您似乎应该提供一个 { name : "ExceptionClassName"} (即 { name: "TypeError"}你的情况)参数。

关于javascript - 向Sinon 的spy.threw() 传递错误参数时,其行为不符合预期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41955535/

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