当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
路径在测试期间永远不会运行。什么是覆盖这条线的最佳实践方式?
由于
答案 0 :(得分:1)
此处列出了常见系统错误:https://nodejs.org/api/errors.html#errors_common_system_errors您可以使用说明触发某些错误。您无法对所有这些内容进行测试,但有一些简单的方法,例如,更改文件的权限,您将遇到 EACCES 错误。
答案 1 :(得分:1)
如果您不想使用实际文件,可以使用sinon
之类的模块来存根fs
。这样,您可以使用您选择的错误调用fs.stat
回调。