沙箱存根不同存根withargs和回调

时间:2017-08-03 12:12:47

标签: javascript unit-testing sinon stub

我想存根一个函数并使用不同的args返回不同的值,这个函数使用一个回调

例如:

function saop (){
 saop.get('car',"http://webservice.com",function (err, result) {});
// (null, {car:"car"}) 
 saop.get('house',"http://webservice.com",function (err, result) {});
// (null, {house:"house"})
}

我试着用这个:

var stub = sandbox.stub(saop, 'get');

stub.onCall(0).returns(null, {car:"car"});
stub.onCall(1).returns(null, {house:"house"});

但是存根返回总是为null,{car:“car”} 我也尝试使用:

var stub = sandbox.stub(saop, 'get');
 stub.withArgs('car').returns(null, {car:"car"});
 stub.withArgs('house').returns(null, {house:"house"});

但是存根返回null。

你可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

如果你的意思是存根应该使用这些值调用回调,你应该使用yields而不是returns(前者将调用它接收的第一个函数参数,在这种情况下是回调,使用fixtures;后者实际上会使函数返回这些值,这在回调的情况下不是很有用):

stub.onCall(0).yields(null, {car:"car"});
stub.onCall(1).yields(null, {house:"house"});