2017-08-07 24 views
1

人口呼出を模擬しようとしていますが、私は普通のJSオブジェクトではなく、mongooseオブジェクトを返すことを馬鹿にしたいと思います。スキーマで人口移動後のオブジェクト

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の配列であることを確認されたマングースとしてモック人口の著者でモックオブジェクトを作成するから私のテストを妨げています。

このように人口が多いフィールドを擬似するためにサイロンを使用した人はいますか?

答えて

1

1つの方法は、mongooseオブジェクトの作成後に配列に何かを挿入することです。配列の直接割り当ても機能しないので、複数の項目に対してループスルーする必要があります。

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

関連する問題