【问题标题】:JavaScript Testing spy-spiesJavaScript 测试间谍
【发布时间】:2023-03-06 10:35:01
【问题描述】:

在 js 测试中,我无法理解 Spy-Spies 的概念以及与 stubs 的区别。

间谍:

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()
}

【问题讨论】:

标签: javascript unit-testing tdd end-to-end


【解决方案1】:

何时使用间谍

顾名思义,间谍用于获取有关函数调用的信息。例如,间谍可以告诉我们一个函数被调用了多少次、每次调用有哪些参数、返回了哪些值、抛出了哪些错误等等。

因此,只要测试的目标是验证某件事发生了,间谍就是一个不错的选择。结合诗浓的断言,我们可以用一个简单的spy来检查很多不同的结果。

间谍最常见的场景包括……

  • 检查函数被调用的次数
  • 检查传递给函数的参数

何时使用存根

存根就像间谍,只是它们替换了目标函数。它们还可以包含自定义行为,例如返回值或抛出异常。他们甚至可以自动调用作为参数提供的任何回调函数。

存根有几个常见用途:

  • 您可以使用它们来替换有问题的代码段
  • 您可以使用它们来触发原本不会触发的代码路径,例如错误处理
  • 您可以使用它们来帮助更轻松地测试异步代码

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-04
    • 2015-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多