Пытаюсь "замокать" 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;
}
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Необходимо считать некоторые столбцы из документа excel для дальнейшей с ним работыНаписал код:
Правильно ли я понимаю, что следующие конструкции должны быть эквивалентны:
Не пойму, почему выбивает ошибку? Скобки все на месте