Sinon存根链式方法

时间:2015-10-05 14:07:55

标签: node.js mocha sinon kue

我的SailsJs控制器中有以下代码:

Jobs.create('beginImport', {
    version: version
}).save(function(err){
    if(err) {
        return res.serverError(err);
    }
    res.ok({ info: "import started" });
});

在我的测试中,我试图像这样存根Jobs

var save = { save: sinon.stub() };
sinon.stub(Jobs, "create").returns(save);

然而,我的测试在2000毫秒后超时并失败。

如何将这些方法存根以便测试通过?

1 个答案:

答案 0 :(得分:3)

你的存根应该调用使用stub.callsArg(index);或相关函数传递给它的函数。

var save = { save: sinon.stub() };

应该成为

var save = { save: sinon.stub().callsArg(0) };

如果您不需要传递任何参数,或

var save = { save: sinon.stub().callsArgWith(0, new Error('error')) };

如果您需要测试错误。