【问题标题】:Mock a function by replacing it with a dummy alternative通过将函数替换为虚拟替代函数来模拟函数
【发布时间】:2017-09-05 18:34:11
【问题描述】:

我有一个异步函数,我想监控它是否被调用以及参数是什么。该函数接受两个参数发出网络请求并返回基于两个参数的响应,例如,假设它是一个附加 api。你传入11 并得到2。而不是提出这个请求,我想为它创建一个模拟,我用它的同步对应物替换这个方法。例如。

这是原来的添加函数:

const async realAdd = (a, b) => {
    return makeRequest(`http://my-service.com/add?a=${a}&b=${b}`)
}

这是我想用来模拟的那个:

const async dummyAdd = (a, b) => {
    return Promise.resolve(a + b)
}

假设有一个函数接受add 并使用它。在这种情况下,这是我想使用的函数,我想用以前的版本模拟 add

const mockAdd = sinon.something(dummyAdd)
let result = someFunctionThatUses(mockAdd)
assert.equal(mockAdd.called, 1)

我想要的只是一种传递虚拟add 方法并检查它是否被调用的方法,但我仍然希望add 函数传递给return 承诺。

【问题讨论】:

    标签: javascript testing mocking sinon stub


    【解决方案1】:
    const spy = sinon.spy(mockAdd);
    let result = someFunctionThatUses(mockAdd);
    assert(spy.calledOnce);
    

    文档参考:http://sinonjs.org/releases/v4.1.1/spies/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-26
      • 1970-01-01
      • 2017-06-10
      • 1970-01-01
      • 2012-04-18
      • 2017-08-15
      相关资源
      最近更新 更多