在我们的代码需要与其他系统或者函数对接时,它可以模拟这些场景,从而使我们测试的时候不再依赖这些场景。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没有得到期望的结果就会测试失败。
网友评论