Chai 期望 [函数] 抛出一个(错误)未通过测试(使用 Node)
Chai expected [Function] to throw an (error) not passing the test (Using Node)
问题:
我正在使用 Chai 进行测试,但我似乎无法测试预期的错误:
柴期望 [函数] 抛出一个(错误)
当前代码:
以下是测试的代码:
describe('Do something', function () {
it('should remove a record from the table', function (done) {
storage.delete(ID, done);
});
it('should throw an error when the lookup fails', function () {
expect(storage.delete.bind(storage, ID)).to.throw('Record not found');
});
});
下面是函数的代码:
delete: function (id, callback) {
// Generate a Visitor object
visitor = new Visitor(id);
/* Delete the visitor that matches the queue an
cookie provided. */
tableService.deleteEntity(function (error, response) {
// If successful, go on.
if (!error) {
// Do something on success.
}
// If unsuccessful, log error.
else {
if (error.code === 'ResourceNotFound') {
throw new Error('Record not found');
}
// For unexpected errros.
else {
throw new Error('Table service error (delete): ' + error);
}
}
if (callback) callback();
});
},
尝试的解决方案:
我已经尝试了调用期望函数的多种变体(包括调用匿名函数:
expect(function() {storage.delete(ID);}).to.throw('Record not found');
绑定,如示例中提供,
和基本之一
expect(storage.delete(ID)).to.throw('Record not found');
我还尝试将 throw 参数从"未找到记录"替换为多种内容,包括将输入定向到已创建的错误(错误),并在参数中创建新错误(新错误("未找到记录"));
可能的原因:
我怀疑错误没有被抛出,因为测试需要一段时间才能与数据库通信以删除记录,但是我不确定如何补救。
此外,似乎在此测试之后运行的测试实际上返回了应该在此测试中返回的错误。
鉴于(从注释中)tableService.deleteEntity
是异步的,因此不可能测试该throw
。并且代码本身是无效的。由于不会捕获引发的异常,因此它将在以不同的刻度引发时未处理。阅读有关 JavaScript 中的异步错误处理和 Node 中未经处理的异常的更多信息.js
换句话说,这样的函数不能被测试抛出错误:
function behaveBad(){
setTimeout(function(){
throw new Error('Bad. Don''t do this');
}, 50);
}
相关文章:
- Webpack/Rect:遵循egghead.io教程,但出现错误:您可能需要一个合适的加载程序来处理此文件类型
- 是什么让一个“;Uncaught RangeError:超过了最大调用堆栈大小“;错误(Chrome,在其他浏览器中显示
- 从我的控制器返回一个不同于200的代码以触发ajax错误,这被认为是一种好的做法吗
- 预期响应包含一个对象,但在angular js中得到一个数组错误
- 错误:$injector:modulerr模块错误(我的第一个SPA应用程序)
- 一个ajax循环有两个输出错误innerHTML
- 在量角器中创建一个.txt错误输出文件是手动的,而不是控制台错误
- 我怎么能把一个错误当作未捕获的错误来记录呢
- 我需要一个jQuery函数来只工作在700px以上的屏幕大小,无法在我的代码中发现错误
- 在这个使用hasOwnProperty的对象扩展程序中有一个错误,I'我不确定那个bug是什么,也不确定这个扩展
- 从另一个JSAppleScript运行另一个JS AppleScript时出现权限错误
- 当张贴到数据库时,I'我得到了一个“;可以't在它们被发送错误之后设置报头”;
- javascript window.location在检查firebug时给了我一个错误的url路径
- 调试器;[错误]194:11:标识符是一个保留字
- new SharedWorker(“whatever.js”)返回一个错误
- 页面上的2个表单带有JS验证-其中一个抛出电子邮件验证错误
- JQuery关注上一个点击的输入错误
- 在一个函数中,我有一个未捕获的语法错误:意外的标记else
- 未捕获的引用错误——一个函数工作而另一个不起作用
- 图表API错误——[一个或多个参与者未能绘制()]