我可以使用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 :(得分: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));