0

我在猫鼬中创建了一个用户(注册)模型。该模型可从 mocha 中创建的测试用例以及前端的注册表单中访问。新用户可以通过前端从注册表中保存,但是用mocha编写的测试用例不能保存。

当我检查代码时,测试用例上connection.readyState的猫鼬是2( )和用户注册表单上的( )。connecting1connected

模型/users.js

var mongoose = require('mongoose');

mongoose.connect('mongodb://localhost/test');

console.log('conn ready:  '+mongoose.connection.readyState);
// "conn ready: 2"  i.e connecting for test case as well as from user register form 

var Schema = mongoose.Schema,
    ObjectId = Schema.ObjectId,
    UserSchema = new Schema({
       // schemas
    });

UserSchema.statics.newUser = function (uname, email, pass) {
    var instance = new User();
    instance.uname  = uname;
    instance.email  = email;
    instance.pass   = pass;
    console.log("conn state: "+mongoose.connection.readyState); 
    // "conn state: 2"  i.e connecting for test case. But  1  i.e connected for  user register form 

    instance.save(function (err) {
      // Do rest
    });
};

var User = mongoose.model('User', UserSchema);

exports.User = User;

如何纠正connection.readyState测试用例中的猫鼬?

4

1 回答 1

0

问题在于itmocha 测试文件中方法的参数传递。我忘记将方法的done参数it放在测试用例中,并且在测试用例结束时没有调用传递的函数done()

describe('User', function () {
    it('new user create', function (done) {
                                    ^^^^   
        User.newUser(
            'test','test@test.com', 'test123',
            function (err, user) {
                should.not.exist(err);
                done();
                ^^^^^^
            }
        );
    });
});
于 2013-04-23T13:31:00.113 回答