10

我有以下结构:

|服务器
 |分贝
  |mongooseTest.js
 |测试
  |userModel.test.js
 |用户
  |userModel.js

使用他们的代码:

mongooseTest.js

    var 猫鼬 = 要求('猫鼬');

    module.exports = 函数() {
        var db = mongoose.createConnection('localhost', 'dbUnitTest');

        db.on('已连接', function() {
            console.log('DB:' + db.name + '本地:' + db.host + ':' + db.port);
        });

        db.on('错误',函数(错误){
            控制台日志(错误);
        });

        返回分贝;
    };

userModel.test.js

    var 断言 = 要求('断言'),
        应该 = 要求('应该'),
        conn = require('../db/mongooseTest'),
        UserModel = require('../user/userModel');

    描述('用户模型',函数(){
        描述('保存',函数(){

            it('正在保存...', function() {
                var db = conn();
                var Model = db.model('User');
                var userModel = 新模型({
                    名称:'我的名字',
                    电子邮件:'contact@com.br',
                    通过:'anything123'
                });

                userModel.on('save', function(user) {
                    console.log('由用户保存事件句柄传递');
                });

                userModel.save(函数(错误,用户){
                    console.log('由用户保存传递');
                    如果(错误)console.log(错误);
                    控制台.log(用户);
                });
            });
        })
    })

用户模型.js

    var 猫鼬 = 要求('猫鼬'),
        加密 = 要求('加密'),
        Schema = mongoose.Schema;

    var setPass = 函数(值){
            var salt = 'anyRandomSaltValue';
            this.set('salt', salt);
            var pass = hashPass(value + salt);
            回程通行证;
        }

    var hashPass = 函数(值){
            return crypto.createHash('sha1').update(value).digest('HEX');
        }

    var userSchema = new Schema({
        姓名: {
            类型:字符串,
            要求:真
        },
        电子邮件: {
            类型:字符串,
            要求:真,
            唯一:真
        },
        经过: {
            类型:字符串,
            要求:真,
            设置:setPass
        },
        盐: {
            类型:字符串,
            要求:真
        }
    });

    userSchema.method({
        验证通行证:函数(senha){
            var salt = this.get('salt');
            var passSha = hashPass(senha + salt);
            return passSha === this.get('senha');
        },
    });

    userSchema.static({
        findByEmail:函数(电子邮件,成功,错误){
            这个.findOne({
                电子邮件:电子邮件
            },函数(e,o){
                如果(e){
                    如果(错误)错误(e);
                } 别的 {
                    如果(成功)成功(o);
                }
            });
        },
    });

    module.exports = mongoose.model("用户", userSchema);

问题是......当我运行“mocha”来执行我的单元测试时,没有执行保存函数的回调。

谢谢大家!

4

1 回答 1

7

这种方法解决了问题。

我还找到了另一种看起来不错的解决方案,但我没有尝试。

于 2012-10-27T03:47:30.180 回答