我想改进我对此功能的代码覆盖率:
function openArchiveFilePath(zipFilepath, next) {
var fullyQualifiedZipFilepath = path.resolve(zipFilepath);
fs.open(zipFilepath, 'r', openFile);
function openFile(err, fd) {
if (err) {
if (err.code === FS_ERROR_CODE.FILE_NOT_FOUND_ERROR_CODE) {
formatErrorMessageAndLog(err, "photo archive file (%s) doesn't exist.",
fullyQualifiedZipFilepath);
return next(err);
}
if (err.code === FS_ERROR_CODE.FILE_PERMISSIONS_ERROR_CODE) {
formatErrorMessageAndLog(err,
"photo archive file (%s) cannot be read, insufficient permissions.",
fullyQualifiedZipFilepath);
return next(err);
}
formatErrorMessageAndLog(err, "photo archive file (%s) cannot be open.",
fullyQualifiedZipFilepath);
return next(err);
}
return next(null, zipFilepath, fd);
}
}
我使用mocha作为测试框架,使用istanbul进行代码覆盖。到目前为止,我可以覆盖文件未找到的情况或权限不正确的情况(分别尝试打开不存在的文件,或打开我创建的文件,我从中删除了读取权限)。
但是,我怎样才能尝试生成Error
可以抛出的更通用的fs.open
以便代码
formatErrorMessageAndLog(err, "photo archive file (%s) cannot be open.",
fullyQualifiedZipFilepath);
return next(err);
会被覆盖吗?