Модульный тест IQueryable - PullRequest
6 голосов
/ 06 июля 2011

Я пытаюсь написать модульный тест для метода, который принимает коллекцию IQueryable.

Как мне создать экземпляр коллекции в моем модульном тесте, прежде чем передать его методу для тестирования?Это код по умолчанию в моем тесте

IQueryable<Item> Items = null; // TODO: Initialize to an appropriate value

А вот что я пытался написать

IQueryable<Item> Items = new IQueryable<Item>; // TODO: Initialize to an appropriate value

Я делаю ошибку школьника?

Ответы [ 3 ]

16 голосов
/ 06 июля 2011

Ну, вы можете использовать .AsQueryable() в любой типизированной коллекции / списке / массиве, однако IMO, которую вы не можете протестировать, поскольку разные поставщики запросов поддерживают разные опции / методы. Вы можете только проверить это. Любой юнит-тест (особенно тот, который использует объекты) мало или ничего не доказывает, что ваша система .

2 голосов
/ 06 июля 2011

IQueryable представляется интерфейсом (http://msdn.microsoft.com/en-us/library/system.linq.iqueryable.aspx). Разве вы не должны пытаться создать экземпляр класса, который реализует этот интерфейс (или, возможно, использовать фиктивный объект для вашего теста)?

0 голосов
/ 19 июня 2016

Лучший способ - использовать шаблон, который позволяет вам тестировать ответы IQueryable из базы данных, например Единица работы и шаблон репозитория

Лучший способ создать фиктивный репозиторий для использованияв модульном тестировании используется хранилище памяти , но вы также можете использовать Moq или любую другую библиотеку поддельных хранилищ.

...