Sinon

在我们的代码需要与其他系统或者函数对接时,它可以模拟这些场景,从而使我们测试的时候不再依赖这些场景。Sinon有主要有三个方法辅助我们进行测试:spy,stub,mock。

spy

生成一个间谍函数,它会记录下函数调用的参数,返回值,this的值,以及抛出的异常。
spy一般有两种玩法,一种是生成一个新的匿名间谍函数,另外一种是对原有的函数进行封装并进行监听。

stub

是带有预编程行为的函数,就是spy的加强版,不仅完全支持spy的各种操作,还能操作函数的行为。和spy一样,stub也能匿名,也能去封住并监听已有函数。然而有一点和spy不同,当封装了一个已有函数后,原函数不会再被调用。

使用stub来嵌入或者直接替换掉一些代码,来达到隔离的目的。简单的说,stub是代码的一部分。在运行时用stub替换真正代码,忽略调用代码的原有实现。目的是用一个简单一点的行为替换一个复杂的行为,从而独立地测试代码的某一部分。

sinon.stub(HTMLMediaElement.prototype, "play"):将HTMLMediaElement.prototype.play 替换成一个stub(),可将它替换成指定函数

stub.restore():由于 stub 是使用指定函数替换已有的函数,所以每次使用后需要用stub.restore()复原它

mock

像spy和stub一样的伪装方法,如果mock没有得到期望的结果就会测试失败。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 需要测试的代码: functiononce(fn){varreturnValue,called=false;ret...
    Jesse_996阅读 1,216评论 0 1
  • 前端测试存在的问题 在讲Sinon之前,我们得先讲一下在学习了Mocha、chai以及enzyme之后,我们的前端...
    韩子卢阅读 6,218评论 1 8
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,845评论 18 139
  • 特别声明:此篇文章是通过Nicolas的博文Testing your frontend JavaScript co...
    Chester723阅读 6,696评论 0 10
  • 老早就想回家看看奶奶,吃奶奶做的饭,今年清明正好有点时间,做着大巴车在路上奔波了一天(早上五点起床,下午四点多才到...
    我是阳光明媚的女子阅读 211评论 0 2