2017-08-07 50 views
1

我想模擬一個填充調用,我想模擬返回貓鼬對象,而不是普通的JS對象。填充調用後模擬鼬對象

sandbox.mock(BookModel) 
    .expects('populate') 
    .yields(null, [ 
    new BookModel({ 
     _id: mongoose.Types.ObjectId(), 
     name: 'Mock Book', 
     authorIds: [{ 
     name: 'Foo', 
     }] 
    }) 
    ]); 

隨着模式:

var BookSchema = new Schema({ 
    name: { type: String, required: true, unique: true }, 
    authorIds: [{type: Schema.Types.ObjectId, ref: 'Author'}], 
}); 

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

但是貓鼬是防止我的測試從使用模擬填充筆者貓鼬可能是檢查的authorIds數組對象ID陣列,創建模擬對象。

有沒有人使用sinon來嘲笑這樣的人口稠密的領域?

回答

1

一種方法是在創建貓鼬對象後在數組中插入一些東西。數組的直接賦值也不起作用,所以你需要遍歷多個項目。

var book = new BookModel({ 
     _id: mongoose.Types.ObjectId(), 
     name: 'Mock Book', 
     authorIds: [] 
    }); 

book.authorIds[0] = { 
     name: 'Foo' 
     }; 

sandbox.mock(BookModel) 
    .expects('populate') 
    .yields(null, [book]); 
+0

工作,謝謝! – lostintranslation