#2621·sinon

RFC: 在 ESM 模块中嵌入函数表达式

作者: forty创建于 2024年10月8日更新于 2024年12月31日

您的功能请求是否与问题有关?请描述。

我们有一个庞大的 nodejs 代码库,其中充满了函数表达式,例如

bash
export const myFunction = () => {
  return true
}

一切都很顺利,我们可以使用 sinon 模拟这些函数。但是,一切美好的事物都有结束,现在我们需要迁移到 ESM(除了第三方模块开始不再支持 commonjs 以外没有特殊需求),当然,我们还必须处理 ES 模块无法模拟 的问题。我们可以将一切移到顶层对象或默认导出,但这样我们就需要修改大量代码(因为需要修改所有导入和调用位置),而且最令人讨厌的是,我们需要以某种方式确保对函数的所有调用都使用顶层对象中的引用,即