我正在尝试在我的 Mongoose 模型上测试我的自定义方法,但是我在测试模型中设置的值消失了,导致测试失败。测试看起来像这样:
it('should get the friend id', function(){
var conversation = new Conversation({
'users': [new ObjectId('0'), new ObjectId('1')]
});
expect(conversation.getFriendId('0')).toEqual(new ObjectId('1'));
});
我的模型声明包含以下内容:
var mongoose = require('mongoose');
var ObjectId = mongoose.Schema.Types.ObjectId;
var ConversationSchema = new mongoose.Schema({
'users': [{'type': ObjectId, 'ref': 'User'}]
});
ConversationSchema.methods.getFriendId = function(userId) {
return this.users;
//return this.users[0] === new ObjectId(userId)
// ? this.users[1] : this.users[0];
};
module.exports = mongoose.model('Conversation', ConversationSchema);
当我运行测试时,我得到:
Expected [ ] to equal { path : '1', instance : 'ObjectID', validators : [ ], setters : [ ], getters : [ ], options : undefined, _index : null }.
我在测试中设置了用户,所以返回值应该是用户数组。(在当前状态下测试仍然会失败,但理论上应该在取消注释第二个返回语句时通过。)相反,用户数组显示为空。
如何从测试模型中获取值以显示在我的自定义函数中?