如何解决JavaScript测试间谍
在js测试中,我无法理解Spy- Spies的概念以及存根的区别。
间谍:
function spyOn(Object,method) { /*... */ }
// A common way of using a spy
const dateSpy = spyOn(Date,'now')
Date.now()
// A common way of checking the spy
console.log(dateSpy.called.length > 0)
存根:
function stubAmount(amount) {
Apple.amount = () => amount
}
// Testing function
function haveApple(amount) {
stubAmount(amount)
howsMyCollection()
}
解决方法
何时使用间谍
顾名思义,间谍用于获取有关函数调用的信息。例如,间谍可以告诉我们一个函数被调用了多少次,每个调用具有什么参数,返回了什么值,抛出了什么错误,等等。
因此,每当测试的目的是验证发生的事情时,间谍都是一个不错的选择。结合Sinon的主张,我们可以使用一个简单的间谍检查许多不同的结果。
间谍最常见的情况是……
- 检查一个函数被调用了多少次
- 检查将哪些参数传递给函数
何时使用存根
存根就像间谍一样,只不过它们代替了目标函数。它们还可以包含自定义行为,例如返回值或引发异常。他们甚至可以自动调用作为参数提供的任何回调函数。
存根有一些常见用途:
- 您可以使用它们替换有问题的代码段
- 您可以使用它们来触发原本不会触发的代码路径,例如错误处理
- 您可以使用它们来帮助更轻松地测试异步代码
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。