测试猫鼬模型所需的属性

Testing Mongoose model required properties

我最近开始使用 node.js、express 和 mongoose 开发应用程序。我决定使用 mocha 作为测试框架,并且想知道如何对 mongoose.model 属性的有效性进行单元测试。

所以如果我有一个这样定义的模型:

var userSchema = new Schema({
    name: {type: String, required: true}
});

var userModel = new mongoose.model('User', userSchema);

我假设声明 "require: true" 意味着必须定义 userSchema.name 而不是 null。

如何测试当我实例化 userModel 时,我必须为其提供一个包含非空或未定义的名称 属性 的对象?

谢谢

查看 Mockgoose 使用 mongoose 模型编写单元测试而不需要 mongodb 实例 运行。

你可以像这样写一个简单的测试:

    var mongoose = require('mongoose'),
        mockgoose = require('mockgoose');

    mockgoose(mongoose);

    var Schema = mongoose.Schema;
    var SimpleSchema = new Schema({
        name: {
            type: String,
            required: true
        }
    });
    mongoose.model('SimpleModel', SimpleSchema);

    it('fails to save document with missing name', function(done) {
        var simpleModel = new SimpleModel({
            name: undefined
        });
        simpleModel.save(function(err) {
            should.exist(err);
            done();
        });
    });

然后使用不同的名称值(null、undefined 等)或什至空对象(即没有名称的对象 属性)定义不同的测试。