Пытаюсь "замокать" MongoDB. В интернетах нашел что надо мокать MongoCursor (из пространства имен MongoDB.Driver) - его нет, или он не торчит.
Вот такое вот пока написано :
var collection = new Mock<IMongoCollection<UiCustomizationData>>();
collection.Setup(mongoCollection => temp);
var database = new Mock<IMongoDatabase>();
database.Setup(x =>
x.GetCollection<UiCustomizationData>("UiCustomizationData", new MongoCollectionSettings()))
.Returns(collection.Object);
var repo = new UiCustomizationRepository(new UiCustomizationDataContext(database.Object));
Мокаю свою базу, и хочу в коллекцию подложить свою.
По логике вещей нужно мокать IMongoCursor<T>, например:
var collection = new Mock<IMongoCollection<UiCustomizationData>>();
var cursorMock = new Mock<IMongoCursor<UiCustomizationData>>();
сursorMock.Setup(m => m.GetEnumerator()).Returns(temp.GetEnumerator());
и потом:
collection.Setup(m => /*Ваш запрос*/).Returns(cursorMock.Object);
В новых версия нужно мокать IAsyncCursor<T>, пробовал так (полный код):
using System;
using System.Collections.Generic;
using System.Threading;
using MongoDB.Driver;
using Moq;
namespace ConsoleApplication6
{
public class Program
{
private static void Main()
{
var temp = new List<UiCustomizationData>
{
new UiCustomizationData { Name = "1" },
new UiCustomizationData { Name = "2" }
};
var coll = new Mock<IMongoCollection<UiCustomizationData>>();
var cursorMock = new Mock<IAsyncCursor<UiCustomizationData>>();
cursorMock.Setup(x => x.Current).Returns(temp);
coll
.Setup(x => x.FindAsync(It.IsAny<FilterDefinition<UiCustomizationData>>(), It.IsAny<FindOptions<UiCustomizationData>>(), It.IsAny<CancellationToken>()))
.ReturnsAsync(() => cursorMock.Object);
var r = coll.Object.FindAsync(x => x.Id == 1).Result;
foreach (var item in r.Current)
{
Console.WriteLine(item.Name);
}
}
}
public class UiCustomizationData
{
public int Id;
public string Name;
}
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости