gpt4 book ai didi

javascript - ChaiJS 不处理异常

转载 作者:太空宇宙 更新时间:2023-11-04 01:01:26 25 4
gpt4 key购买 nike

这是一个 NodeJS 模块:

var plural = function(words, num) {
if (words.length != 3) {
throw new Error('Wrong words array');
}
var lastNum = num % 10;
var second = (num / 10) % 10;
if (second == 1)
return words[2]
else if (lastNum == 1)
return words[0];
else if (lastNum <= 4)
return words[1];
else
return words[2];
};

module.exports = plural;

这是模块测试:

var expect = require('chai').expect;
var plural = require('../plural')

describe('Test with wrong array', function() {

it('Must throw Error', function() {
expect(plural(['я','меня'])).to.throw(Error);
});

});

我想测试异常抛出。但这是 mocha 的输出:

 Test with wrong array
1) Must throw Error

1 failing

1) Test with wrong array Must throw Error:
Error: Wrong words array
at plural (C:\Users\home\Google Drive\Учеба\Спецкурсы\Яндекс.Интерфейсы\TestableCode\testable-code-01\plural.js:3:9)
at Context.<anonymous> (C:\Users\home\Google Drive\Учеба\Спецкурсы\Яндекс.Интерфейсы\TestableCode\testable-code-01\test\cat.test.js:31:10)
at callFn (C:\Users\home\AppData\Roaming\npm\node_modules\mocha\lib\runnable.js:250:21)
at Test.Runnable.run (C:\Users\home\AppData\Roaming\npm\node_modules\mocha\lib\runnable.js:243:7)
at Runner.runTest (C:\Users\home\AppData\Roaming\npm\node_modules\mocha\lib\runner.js:373:10)
at C:\Users\home\AppData\Roaming\npm\node_modules\mocha\lib\runner.js:451:12
at next (C:\Users\home\AppData\Roaming\npm\node_modules\mocha\lib\runner.js:298:14)
at C:\Users\home\AppData\Roaming\npm\node_modules\mocha\lib\runner.js:308:7
at next (C:\Users\home\AppData\Roaming\npm\node_modules\mocha\lib\runner.js:246:23)
at Object._onImmediate (C:\Users\home\AppData\Roaming\npm\node_modules\mocha\lib\runner.js:275:5)
at processImmediate [as _immediateCallback] (timers.js:345:15)

所以,我的代码抛出异常,这是正确的行为,测试应该通过。但事实并非如此。有什么问题吗?

最佳答案

Chai 的 to.throw() 方法是 assertThrows 的简写方法需要传递几个参数给它。您可以看到 to.throw() here 的示例。看起来 throws() 需要传递您将抛出的错误的构造函数。

你可以在 Chai 的独立库 'assertion-error' here 中看到 AssertionError 的定义。如果您有兴趣抛出自定义错误消息。

就您而言,您应该能够传入 Error.constructorError 我想能达到相同的效果。

expect(plural(['я','меня'])).to.throw(Error);

此外,您必须通过引用将函数传递给expect - 您正在执行该函数,然后才能将其用作expect的参数:

expect(function(){
plural(['я','меня']);
}).to.throw(Error);

关于javascript - ChaiJS 不处理异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26533637/

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