【问题标题】:Patch/mock function inside another function for testing in javascript另一个函数中的补丁/模拟函数,用于在 javascript 中进行测试
【发布时间】:2016-05-26 18:31:57
【问题描述】:

基本上,我想修补另一个函数调用的函数,以便我可以确认它们已被调用。这在js中可能吗? (我正在使用 Mocha/Chai/Sinon 进行测试)。

我想做的简化版:

// in render.js
export helper = function() {}
export default = function() {
  helper()
}

// in the render-test.js
import render, { helper } from 'render'
// what I'd like to to:
helper = sinon.spy()
render()
assert(helper.called, true)

【问题讨论】:

    标签: javascript node.js unit-testing mocha.js sinon


    【解决方案1】:

    这是可能的,但它确实需要一些重写,尤其是你在 render.js 中调用 helper 的方式。

    这是一个有效的例子:

    // render.js
    export function helper() {}
    export default function() {
      exports.helper()
    }
    
    // render-test.js
    import render, * as renderFuncs from 'render'
    ...
    sinon.spy(renderFuncs, 'helper');
    render()
    assert(renderFuncs.helper.called)
    

    您需要调用exports.helper() 而不仅仅是helper() 的原因是因为后者是对helper 函数的本地 引用,您无法从测试文件访问该函数.

    exports 对象可以从测试文件中访问(它被命名为renderFuncs),所以Sinon 可以更改对helper 的引用并用间谍包裹它。 p>

    【讨论】:

      猜你喜欢
      • 2013-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-31
      • 1970-01-01
      • 2023-03-16
      • 2014-10-17
      相关资源
      最近更新 更多