moq возвращает dataReader - PullRequest
       13

moq возвращает dataReader

0 голосов
/ 30 сентября 2011

У меня странный опыт работы с 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'.

В других случаях он проходит мимо этого и может читать данные некоторых столбцов, но другие столбцы не существуют.(что должно быть связано с моим методом сериализации)

1 Ответ

0 голосов
/ 05 октября 2011

Ну, это не совсем удовлетворительный ответ, но код работает сейчас ..

похоже на это .. в том, что причина не найдена. здесь

Во всяком случае ... как указано выше, проблема возникала внутри моего метода GetRetailerDetail, где код достигает , в то время как (data.Read ()) выдает ошибку ..

Исправление .. измените имя переменной считывателя данных .. то есть это было "data", а теперь это "data2" ... вот и все, что я изменил.

...