У меня странный опыт работы с moq / mocking.
Я пытаюсь смоделировать данные, поступающие в метод, чтобы у меня не было базы данных, доступной во время тестирования.
Поэтому я загружаю некоторые данные, которые ранее были выделены.Загрузка его в dataTable, затем создание считывателя данных оттуда, потому что мой метод бизнес-уровня ожидает считыватель данных.
Затем создаем макет для моего уровня данных.и устанавливаю возвращаемое значение для конкретного метода в мой новый источник данных.
Затем я устанавливаю (внедряю) мой ложный уровень данных в мой бизнес-уровень, чтобы он мог выполнять работу по возврату данных, когда придет время..
var dataTable = DataSerialisation.GetDataTable("C:\\data.xml");
IDataReader reader = dataTable.CreateDataReader();
var mock = new Mock<IRetailerDal>();
mock.Setup(x => x.ReadRetailerDetails("00")).Returns(reader);
retailersBusinessLayer.RetailerDal = mock.Object;
var r = retailersBusinessLayer.GetRetailerDetail("00");
Теперь .. когда вызывается «GetRetailerDetail», он в основном получает значение «while (data.Read ())» и вылетает, но только иногда.Я получаю исключение:
System.InvalidOperationException : DataTableReader is invalid for current DataTable 'Table1'.
В других случаях он проходит мимо этого и может читать данные некоторых столбцов, но другие столбцы не существуют.(что должно быть связано с моим методом сериализации)