节点.js单元测试:测试fs模块抛出错误时的行为

Node.js unit testing: Test behaviour when fs module throws error?

本文关键字:错误 出错 模块 单元测试 js 测试 fs 节点      更新时间:2023-09-26

fs模块函数抛出错误时,如何测试模块的行为?我有这个代码:

fs.stat('/Users/' + username.sync() + '/Library/LaunchAgents/' + key + '.plist', function(error, stat) {
 if (!error) {
   callback(null, true);
 } else if (error.code == 'ENOENT') {
   callback(null, false);
 } else {
   callback(error, null);
 }
 return;
});

但目前,else路径在测试期间永远不会运行。覆盖这条线的最佳实践方法是什么?

谢谢

如果您不想摆弄实际文件,可以使用像 sinon 这样的模块来存根fs。这样,您就可以使用您选择的错误调用fs.stat回调。

这里有一个常见系统错误的列表: https://nodejs.org/api/errors.html#errors_common_system_errors 您可以使用描述来触发一些错误。您无法测试所有这些,但有一些简单的方法,例如,更改文件的权限,您将遇到 EACCES 错误。

相关文章: