单元测试node.js模拟文件系统打开错误

时间:2016-11-29 17:10:40

标签: node.js unit-testing mocha istanbul

我想改进我对此功能的代码覆盖率:

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);

会被覆盖吗?

0 个答案:

没有答案