Javascript 在短截图时检查模型值';s保存方法

Javascript 在短截图时检查模型值';s保存方法,javascript,node.js,mongoose,sinon,Javascript,Node.js,Mongoose,Sinon,我试图在不连接数据库的情况下测试回调中的一些逻辑。为此,我需要存根模型的save方法。但是,我仍然需要检查作为逻辑一部分发生变化的模型值 逻辑是: // check if user exists with facebook or google account User.findOne({ $or: [{'facebook.email': email}, {'google.email': email}] }, function(err, user) { if (err) return cb

我试图在不连接数据库的情况下测试回调中的一些逻辑。为此,我需要存根模型的save方法。但是,我仍然需要检查作为逻辑一部分发生变化的模型值

逻辑是:

// check if user exists with facebook or google account
User.findOne({ $or: [{'facebook.email': email}, {'google.email': email}] }, function(err, user) {
    if (err) return cb(err);
    else {
        // create new user
        if (!user) {
            user = new User();
        }

        // add the local account
        user.local.email = email; // <--
        user.local.password = User.generateHash(password);

        // create a new token for the local account
        user.local.token = User.createAccessToken(email);

        // save
        user.save(function(err, user) {
            if (err) cb(err);
            return cb(false, user); // <-- HOW DO I TEST that user.local.email == email inside this callback?
        });
    }
});
//检查用户是否存在facebook或google帐户
findOne({$or:[{'facebook.email':email},{'google.email':email}]},函数(err,User){
如果(错误)返回cb(错误);
否则{
//创建新用户
如果(!用户){
user=新用户();
}
//添加本地帐户

user.local.email=email;//仍在为此寻找一个好的解决方案。。。
it('should create new user if email not in database', function(done) {
        var email = 'test@test.com';
        sinon.stub(User, 'findOne').yields(false, null);
        sinon.stub(User.prototype, 'save') // <-- how to stub this correctly?
        userService.localSignup(email, '123123', function(err, user) {
            assert.instanceOf(user, User);
            assert.equal(user.local.email, email);
            assert.isNotNull(user.local.password);
            return done();
        });
    });