Sinon教程:使用嘲弄,间谍和存根进行JavaScript测试

Sinon教程:使用嘲弄,间谍和存根进行JavaScript测试本文由 Mark Brown 和 MarcTowler 进行了同行评审 感谢所有 SitePoint 的同行评审人员使 SitePoint 内容达到**状态 编写单元测试时 最大的绊脚石之一就是当您拥有不平凡的代码时该怎么办 在现实生活中的项目中 代码通常会执行各种使测试变得困难的事情 Ajax 请求 计时器

大家好,我是讯享网,很高兴认识大家。

本文由Mark Brown和MarcTowler进行了同行评审。 感谢所有SitePoint的同行评审人员使SitePoint内容达到**状态!

编写单元测试时,最大的绊脚石之一就是当您拥有不平凡的代码时该怎么办。

在现实生活中的项目中,代码通常会执行各种使测试变得困难的事情。 Ajax请求,计时器,日期,访问其他浏览器功能…或者如果您使用的是Node.js,数据库总是很有趣,网络或文件访问也是如此。

所有这些都很难测试,因为您无法用代码控制它们。 如果您使用的是Ajax,则需要一个服务器来响应请求,以使测试通过。 如果使用setTimeout ,则测试必须等待。 对于数据库或网络,这是同一回事–您需要具有正确数据的数据库或网络服务器。

现实生活并不像许多测试教程所显示的那样容易。 但是您知道有解决方案吗?

通过使用Sinon,我们可以使测试非平凡的代码变得微不足道!

让我们看看如何。


讯享网

是什么使Sinon如此重要和有用?

简而言之, Sinon允许您使用使测试变得简单的东西来替换测试中的困难部分。

测试一段代码时,您不想让它受到测试之外的任何影响。 如果外部因素影响测试,则测试会变得更加复杂,并且可能会随机失败。

如果要测试进行Ajax调用的代码,该怎么做? 您需要运行服务器,并确保它给出了测试所需的准确响应。 设置很复杂,并且使编写和运行单元测试变得困难。

如果您的代码取决于时间呢? 比方说,它需要等待一秒钟再做某事。 现在怎么办? 您可以在测试中使用setTimeout等待一秒钟,但这会使测试变慢。 想象一下间隔是否更长,例如五分钟。 我猜您可能不想每次运行测试都等待五分钟。

通过使用Sinon,我们可以解决这两个问题(以及许多其他问题),并消除复杂性。

Sinon如何工作?

Sinon通过允许您轻松创建所谓的test-double来帮助消除测试的复杂性。

顾名思义,测试双打是测试中使用的代码的替换。 回顾Ajax示例,而不是设置服务器,我们将用一个test-double代替Ajax调用。 在时间示例中,我们将使用测试双打来“及时前进”。

小讯
上一篇 2025-03-28 16:45
下一篇 2025-02-18 09:21

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/118802.html