Unit testing 单元测试Mongoose模式有意义吗

Unit testing 单元测试Mongoose模式有意义吗,unit-testing,mongoose,schema,Unit Testing,Mongoose,Schema,出于演示目的,假设我有以下模式+模型: const UserSchema = mongoose.Schema({ userName: { type: String, required: true, unique: true } }); const UserModel = mongoose.model("User", UserSchema); 我打算有一个大的模式,因此为了便于维护,我在user.schema.js中定义了它,而相应的用户模型在一个单独的文件中

出于演示目的,假设我有以下模式+模型:

const UserSchema = mongoose.Schema({
  userName: {
    type: String,
    required: true,
    unique: true
  }
});

const UserModel = mongoose.model("User", UserSchema);
我打算有一个大的模式,因此为了便于维护,我在user.schema.js中定义了它,而相应的用户模型在一个单独的文件中

我用单元测试覆盖了模型,并开始考虑对模式模块进行同样的测试,除了。。。我不确定这是否有道理

我见过人们使用实际的测试数据库连接来测试他们的模型/模式,但这不是一个单元测试,更像是一个集成测试,这是一个不同的概念。对于模式的单元测试,我不关心MongoDB本身是否正常工作

互联网(包括SO)也公布了测试猫鼬验证的代码。这更接近我想要做的,因为基本思想是检查所有预期的道具和限制是否都在模式中。它看起来是这样的:

it('should be invalid if username is empty', function(done) {
  new UserModel().validate(function(err) {
    expect(err.errors.name).to.exist;
    done();
  });
});
如果使用实时数据库进行测试,则可以将
.validate
更改为
.save

然后我突然意识到我会在这里做两件事:

  • 测试猫鼬的行为,我也不在乎/打算/想这么做
  • 基本上复制了我的模式。如果我以后决定更改其中的任何内容,我也必须更改单元测试
  • 这看起来像是对一个配置对象进行单元测试,除了确保我正确编写了regex之类的东西之外,这是毫无意义的

    问题
  • 因此,我决定根本不测试模式。这有意义吗?还是我遗漏了什么
  • 作为一个附带问题,您认为使用DB连接编写测试有意义吗?这将测试我的schema+mongoose+mongo,不知何故我发现它是多余的

  • 我现在问的问题和你一样:)。你找到答案了吗?遗憾的是,我没有[