0

在我们的 React/TypeScript 应用程序中,我们使用 segment.com 跟踪分析,我们使用 jest 进行单元测试。

index.html 中的 segment.com 片段添加了一个分析对象,我们可以在代码中的任何地方使用它,并且提供了类型。

在我们的一项测试中,代码执行调用analytics.track("navigate")并崩溃,因为未定义分析。

我研究了模拟模块或分配具有存根实现的对象的选项。分配一个对象很丑,因为我还需要将模拟分配给其他 19 个方法。测试或真实代码不需要该模块,并且导入它以便开玩笑可以模拟它被证明是痛苦的。

模拟analytics.track()测试方法的最简单方法是什么?

4

1 回答 1

0

事实证明,有一个简单的单行解决方案。将global.analytics = {track: jst.fn() } as any;Casting 添加到 any 会绕过类型检查,并让我们提供一个存根实现,以便仅用于 track 方法,以便测试可以干净地执行。

于 2021-04-14T17:26:00.427 回答