Еще один «простой» вопрос об объектах модели единого тестирования, использующих уровень доступа к данным.Mocking LINQ To SQL поставщик данных, NotSupportedException on Live code
Когда я дразнить мой Table<Customer>
в IQuerable<ICustomer>
, где new List<FakeCustomer>().AsQuerable()
используется в роли в памяти хранилища данных, следующий код проходит модульное тестирование отлично:
var filteredCustomers = from c in dal.Customers
where c.Code.ToUpperInvariant() == "ABC"
select c;
При запуске приложения я, конечно, получить NotSupportedException
(из-за ToUpperInvariant()
). Может быть, это довольно хромой пример, потому что проблему можно устранить, заменив ToUpperInvariant()
на ToUpper()
, но вы поняли суть.
Вопрос: является ли такое несоответствие «платой» за запись реального блока, но не интеграционными тестами? Или, может быть, я что-то делаю неправильно, например. должен быть другой способ издеваться над DataContext таким образом, чтобы полностью имитировать Linq To SQL DataContext?
В настоящее время я размещаю тестовую базу данных, а не в макете памяти, чтобы поймать такие ошибки.
Спасибо за ваши предложения.
Ahh, извините. Я уже установил «Объекты» в «SQL». Пятница, была пьяна :). Спасибо за быстрый ответ и отметив неправильный термин – Roman
@ Roman: Нет проблем. Редактировал мой ответ :) –