为什么伊斯坦布尔会显示承诺链中所有内容的覆盖范围,而不管是否对其进行测试?
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
。
但问题是,为什么要将其排除在覆盖范围之外?
我的代码有:
.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
。
但问题是,为什么要将其排除在覆盖范围之外?