微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有没有一种简单的方法可以用 TypeScript 开玩笑地模拟段的 AnalyticsJS analytics.track()?

如何解决有没有一种简单的方法可以用 TypeScript 开玩笑地模拟段的 AnalyticsJS analytics.track()?

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

index.html 中的 segment.com 代码添加一个分析对象,我们可以在代码中的任何位置使用该对象并提供类型。

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

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

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

解决方法

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。