【问题标题】:Overriding function with Sinon.mock?用 Sinon.mock 覆盖函数?
【发布时间】:2015-06-10 04:33:25
【问题描述】:

文件说

var 期望 = mock.expects("method"); 用模拟函数覆盖 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();

但它们都不起作用。

【问题讨论】:

    标签: node.js mocking sinon


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 自 3.0.0 版起已替换为 sinon.stub(obj, 'meth').callsFake(fn)
    • @AdonesPitogo 我有一个简单的问题。如果'meth'函数也有参数,你如何使用这个方法(callsFake)?
    • @SameerSrivastavasinon.stub(obj, 'method').callsFake(function(arg1, arg2) { /* do what you want with args here */ })
    • 不,这不起作用。我一直得到同样的回应
    猜你喜欢
    • 2010-10-25
    • 1970-01-01
    • 2010-10-30
    • 2015-03-12
    • 2011-05-31
    • 1970-01-01
    • 2020-11-24
    • 2011-11-14
    相关资源
    最近更新 更多