Node.js单元测试:当fs模块抛出错误时测试行为?

时间:2015-12-27 17:35:56

标签: javascript node.js unit-testing

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路径在测试期间永远不会运行。什么是覆盖这条线的最佳实践方式?

由于

2 个答案:

答案 0 :(得分:1)

此处列出了常见系统错误:https://nodejs.org/api/errors.html#errors_common_system_errors您可以使用说明触发某些错误。您无法对所有这些内容进行测试,但有一些简单的方法,例如,更改文件的权限,您将遇到 EACCES 错误。

答案 1 :(得分:1)

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