代码之家  ›  专栏  ›  技术社区  ›  user773737

存根对象而不需要方法

  •  0
  • user773737  · 技术社区  · 6 年前

    我有这样的想法:

    sandbox.stub(rp, 'get').resolves(successResponse)
    

    它在遇到以下代码时返回我的自定义响应:

    return await rp.get(url, options)
    

    但我怎么能这样做:

        sandbox.stub(rp).resolves(successResponse)
    

    哪个可以在点击此代码时返回自定义响应?

        return await rp(url, options)
    

    当我尝试“存根”整个对象时,在运行测试时会出现以下错误:

    TypeError: Attempted to wrap undefined property undefined as function
          at wrapMethod (node_modules\sinon\lib\sinon\util\core\wrap-method.js:70:21)
          at stub (node_modules\sinon\lib\sinon\stub.js:58:44)
          at Object.stub (node_modules\sinon\lib\sinon\collection.js:93:33)
    

    rp request-promise-native ,其中包装 request

    2 回复  |  直到 6 年前
        1
  •  1
  •   user773737 user773737    6 年前

    从上面评论中的@Troopers链接来看,这似乎是不可能的: Doing this is not technically possible without faking the entire module loading system.

    因此,我遵循了以下建议: https://github.com/request/request/issues/2181 并使用mock require来存根 rp . 我还修改了以前调用 rp.get() ,这样它就可以调用 rp() ,因为我也不知道如何将两者都存根 rp() rp.get()

        2
  •  0
  •   mantoni    6 年前

    您可能会发现Sinon HowTo about Link Seams很有帮助: http://sinonjs.org/how-to/link-seams-commonjs/