2014-05-10 43 views
0

我可以用callsArgWith测试回调,例如:兴农 - callsArgWith高级用法

var modelsMock = { 
    Users: { 
    findOne: sinon.stub() 
    } 
}; 

usersController.__set__({ 
    'models': modelsMock, 
}); 

//... inside a test: 
var user = 'foo'; 
modelsMock.Users.findOne.callsArgWith(1, true, user); 

时,我的代码是这样工作得很好:

models.Users.findOne(id, function(err, user) { 
    //stuff here. 
}); 

,但我怎么能测试一个回调以下情况?

var user = new models.Users(userData); 
user.save(function(err) { 
    //I want to test this callback 
}); 

让我知道如果它不够清楚,我会尽力解释更好。

回答

0

您可以使用间谍功能作为回调本身;这与你现有的模拟无关。

比方说,你要测试的以下功能:

function createUser(callback) { 
    var user = new models.Users(userData); 
    user.save(callback); 
} 

在您的测试,你会传递给它一个间谍为回调

// inside a test 
var spyCallback = sinon.spy(); 
// when 
createUser(spyCallback); 
// then 
assert(spyCallback.calledWith(user)); 
+0

@卢卡斯 - lobosque做这项工作出来您? – Esteban