测试Mongoose模型所需的属性

时间:2015-02-03 03:10:23

标签: node.js mongodb mongoose mocha

我最近开始使用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时,我必须为它提供一个包含name属性的对象,该属性不是null或未定义?

由于

1 个答案:

答案 0 :(得分:1)

检查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();
        });
    });

然后使用不同的name(null,undefined等)或甚至是空对象(即没有name属性的对象)定义不同的测试。