Mongoose创建测试数据并在没有数据库连接的情况下填充

mar*_*rto 5 javascript unit-testing mongoose node.js coffeescript

我正在编写一个使用具有嵌套对象的猫鼬模型的单元测试.我想填充主模型和引用的模型,而不调用'populate'并从数据库中获取任何内容.这是coffeescript中的一个例子

CarSchema = new mongoose.Schema
  name:
    type: String
    required: true
  engine:
    type: ObjectId
    ref: 'Engine'
    required: true

Car = mongoose.model('Car', CarSchema)

EngineSchema = new mongoose.Schema
  name:
    type:String
    required: true

Engine = mongoose.model('Engine', EngineSchema)

engine1 = new Engine({name: 'test'})
car1 = new Car({engine: engine1, name: 'car'})

assert.equal (car1.engine.name, 'test') #this fails
Run Code Online (Sandbox Code Playgroud)

会发生什么事情是将car1.engine设置为id而不是引擎对象.有没有办法让这个工作?

And*_*yer 4

调用setValue将保留水合文档:

car1.setValue('engine', engine1)
Run Code Online (Sandbox Code Playgroud)