在我的單元測試中,我想測試我創建的用於從MongoDB過濾數據的方法。無法模仿我的存儲庫中的Get()函數 - MongoDB.Driver 2.2.3
當我嘗試嘲笑我的功能是這樣的:
_repo.GetFluent<Location>((Arg.Any<Expression<Func<Location, bool>>>()))
.Returns(x => locations.Where(x.Arg<Expression<Func<Location, bool>>>()).ToList());
它強調的Returns
說:
無法轉換lambda表達式。
時,我曾在我的簡單的項目使用MongoDB的2.0.0驅動我沒有問題,我的嘲諷功能Get()
這樣的,但現在新的2.2.3驅動程序之前我有一個錯誤嘲笑他。有另一種方法嗎?
我已經看到,新的驅動程序正在使用IFindFluent
,而舊的驅動程序使用了MongoCursor
來獲取我的數據。
我應該嘲笑IFindFluent
莫名其妙嗎?
這是我爲GetFluent()
方法
public IFindFluent<TEntity, TEntity> GetFluent<TEntity>(System.Linq.Expressions.Expression<Func<TEntity, bool>> filter = null) where TEntity : class, new()
{
var collection = GetCollection<TEntity>();
if (filter == null)
{
var emptyFilter = Builders<TEntity>.Filter.Empty;
return collection.Find(emptyFilter);
}
else
{
var filterDefinition = Builders<TEntity>.Filter.Where(filter);
return collection.Find(filterDefinition);
}
}
你可以粘貼你的MongoRepository的GetFluent方法的代碼嗎? – Jerome2606