是否可以测试一个不返回任何 chai 的 js 函数?



async executeEventEndSuccess(statusData) {
if (storageType.toUpperCase() !== common.Blob) {
let appStatus = status.getStatus(statusData.tenantId, statusData.viewerId, statusData.excutionId);
uploadHelper.renameFileOnEndEvent(statusData.tenantId, statusData.viewerId, statusData.excutionId);
appStatus.forEach(async ele => {
if (ele.executionID === parseInt(statusData.excutionId) && ele.tenant === statusData.tenantId && ele.panel === statusData.viewerId && ele.tableName === common.type.panelWatch) {
try {
const updateDataPanelStatus = await panelStatusData.updatePanelStatus(statusData.tenantId, statusData.viewerId, ele.path)
eventRepo.updatePanelStatus(statusData.tenantId, statusData.viewerId, updateDataPanelStatus);
}
catch (error) {
throw error;
}
};
});
}
try {
console.log(statusData.tenants);

await eventRepo.executeEndProcedure(statusData);
}
catch (error) {
throw error;
}
}

在这里,我需要测试我的 executeEventEndSuccess 函数中是否存在 appStatus?我需要对这个函数执行单元测试??

简短回答:是的,我会亲自为此函数执行单元测试。

是的,可以通过mock-require或其他测试/设计技巧等工具以某种向后的方式挂钩到此功能。

看起来这个函数做了许多重要的事情,可以从测试覆盖率中受益,以验证它是否有效,并防止回归:

  • 如果不是common.Blob,请重命名文件
if (storageType.toUpperCase() !== common.Blob) {
...
uploadHelper.renameFileOnEndEvent(
statusData.tenantId, 
statusData.viewerId, 
statusData.excutionId
);
  • 执行状态匹配
if (ele.executionID === parseInt(statusData.excutionId) && ele.tenant === statusData.tenantId && ele.panel === statusData.viewerId && ele.tableName === common.type.panelWatch) {
  • 执行(分布式?(状态更新
const updateDataPanelStatus = await panelStatusData.updatePanelStatus(statusData.tenantId, statusData.viewerId, ele.path)
eventRepo.updatePanelStatus(statusData.tenantId, statusData.viewerId, updateDataPanelStatus);
  • 执行结束过程
await eventRepo.executeEndProcedure(statusData);

这些动作中的每一个似乎都非常重要!

考虑状态匹配的情况。 在没有测试的情况下,假设您手动验证所有内容,单击交易以确保一切正常。 几个月后,另一位工程师回来了,他认为不再使用ele.tenant,并从条件中删除了支票。 如果没有测试,就不会有关于此更改的反馈,功能不受保护,客户端不受保护,工程师也不会受到保护!

此外,请考虑重命名功能。 这似乎非常重要,如果我在这个代码库中工作,我个人希望测试涵盖此功能是否正常工作,并防止引入可能导致重命名不发生的回归。

最后,测试将帮助您验证功能和流在开发过程中是否正常工作,并且与手动执行这些流相比,开销更少,速度更快。

现在最困难的部分实际上是测试它:)就目前而言,很难隔离我上面列出的重要功能。 您可以重构以帮助公开该功能并使其直接可测试,或者您可以使用某种模拟/补丁框架来允许您挂钩到该功能并在调用中断言。

相关内容

最新更新