为什么伊斯坦布尔会显示承诺链中所有内容的覆盖范围,而不管是否对其进行测试?

Why does Istanbul show coverage for everything in a promise chain regardless of whether or not there's a test for it?

我的代码有:

.then((data) => {
  let providerId = data[1].name;
  console.log(providerId);

  return global.db.Transcription.create({
    ConferenceId: foundConference.id
  })
    .then(() => {
      return {
        providerId
      };
    });
})
.then((dbTranscription) => {
  return factory.checkTranscription({
    Body: JSON.stringify({
      providerId: dbTranscription.providerId
    })
  });
})

伊斯坦布尔显示:

但是,我没有对被调用的 checkTranscription 等进行具体测试。我不想将其显示为已涵盖。有办法吗?

伊斯坦布尔将覆盖满足您为 include 属性 提供的 glob 的任何文件中的代码。您还可以指定一个 exclude glob,可用于排除特定文件(例如您的测试文件本身)。让 istanbul 忽略特定函数的实现的唯一方法是将该函数(在本例中 (dbTransciption) => { return factory.checkTranscription(...); })移动到它自己的模块并将该文件从测试覆盖范围中排除。

在您正在测试的代码库中的某处,它正在调用该承诺链并最终调用该函数。您可以看到,因为第 71 行的 1x

但问题是,为什么要将其排除在覆盖范围之外?