ES2020 私有 class methods/fields 和测试

ES2020 private class methods/fields and testing

如您所知,ES2020 正在引入私有 class 方法和字段,类似于我们目前在 typescript 中的方法和字段 (尽管关键字不同... TS -> private | JS -> #methodName 或 #fieldName)。

Link 到 RC(第 3 阶段)https://github.com/tc39/proposal-private-methods

我们目前可以将其与 babel 插件 一起使用: https://babeljs.io/docs/en/babel-plugin-proposal-private-methods

技术栈:

我使用 Jest 和 Enzyme 进行单元测试。

问题:

我面临的问题是,每当我使用这些字段或方法导入 class 时,我只是尝试引用 wrapper.instance() 调用它们来测试它们,我可以看到私有方法在实例中不可见(这是正确的,因为它是私有的)。

错误示例:#someMethod is undefined

您将如何继续处理这个问题?

你会跳过测试私有方法还是有解决方案?

在调试我的 UT 时,我看到他们的名字有一个前缀 __private_XXX_,而 XXX 是他们在 class.

中出现的“索引”

因此您可以使用 __private_XXX_someMethod 访问 #someMethod 但这需要您检查该“索引”并在每次 class 更改索引时更新它。