用Sinon.mock重写函数?

fui*_*iii 8 mocking node.js sinon

文件说

var期望=mock.expects(“方法”); 使用模拟函数覆盖 obj.method 并返回它。请参阅下面的期望。

其语法是什么?

我试过

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

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

但它们都不起作用。

psq*_*red 7

挑剔:您将变量命名为mock,但expects()返回了一个期望。

无论如何,Sinon 文档说它mock()接受一个参数并返回一个模拟对象。 expects()返回一个期望,它既是间谍又是存根,所以你可以这样做:

var mock = sinon.mock(myObj).expects('myfunc').returns('something');

如果你想myObj.myfunc用自定义函数替换,你可以使用存根,也许像这样:

var stub = sinon.stub(myObj, 'myfunc', function() {
    console.log('something');
});
Run Code Online (Sandbox Code Playgroud)

适用于诗农版本 >= 3.0.0

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

  • 自版本 3.0.0 起,这已被替换为 `sinon.stub(obj, 'meth').callsFake(fn)` (9认同)