NodeJS 用Sinon.mock覆盖函数?

zaqlnxep  于 2023-05-22  发布在  Node.js
关注(0)|答案(1)|浏览(77)

文件上说
var expectation = mock.expects(“方法”);用模拟函数覆盖obj.method并返回它。见下文的预期。
语法是什么?
我尽力了

var mock = sandbox.mock(myObj).expects(myObj, "myfunc", function(){
                console.log('please!!!')
            }).once();

var mock = sandbox.mock(myObj).expects("myfunc", function(){
                console.log('please!!!')
            }).once();

但都不管用。

des4xlb0

des4xlb01#

吹毛求疵:你命名了你的变量mock,但是expects()返回了一个期望值。
在任何情况下,Sinon文档都说mock()接受一个参数并返回一个模拟对象。expects()返回一个expectation,它既是spy也是stub,所以你可以这样做:
var mock = sinon.mock(myObj).expects('myfunc').returns('something');
如果你想用一个自定义函数替换myObj.myfunc,你可以使用一个存根,可能像这样:

var stub = sinon.stub(myObj, 'myfunc', function() {
    console.log('something');
});

Sinon版本>= 3.0.0

var stub = sinon.stub(myObj, 'myfunc')
stub.callsFake(() => { 
  console.log('here')
  return Promise.resolve(1)
})

相关问题