Есть ли в памяти провайдер для Entity Framework?

entity-framework rhino-mocks

Вопрос

Я являюсь модульным тестовым кодом, написанным для ADO .NET Entity Framework. Я хотел бы заполнить базу данных в памяти строками и убедиться, что мой код извлекает их правильно.

Я могу издеваться над Entity Framework, используя Rhino Mocks, но этого будет недостаточно. Я бы сказал запрос, какие объекты мне вернуть. Это не будет проверять ни предложение where, ни операторы .Include (). Я хочу быть уверен, что мое предложение where соответствует только тем строкам, которые я намереваюсь, и никаким другим. Я хочу быть уверен, что я попросил организации, которые мне нужны, а не те, которые мне не нужны.

Например:

class CustomerService
{
    ObjectQuery<Customer> _customerSource;
    public CustomerService(ObjectQuery<Customer> customerSource)
    {
        _customerSource = customerSource;
    }
    public Customer GetCustomerById(int customerId)
    {
        var customers = from c in _customerSource.Include("Order")
            where c.CustomerID == customerId
            select c;
        return customers.FirstOrDefault();
    }
}

Если я высмеиваю ObjectQuery, чтобы вернуть известного клиента, заполненного заказами, как я узнаю, что CustomerService имеет право where и Включить? Я бы предпочел вставить несколько строк клиента и несколько строк заказа, а затем утверждать, что был выбран правильный клиент и заполнены заказы.

Принятый ответ

В настоящее время в EF нет поставщика памяти, но если вы посмотрите на Highway.Data, он имеет базовый интерфейс абстракции и InMemoryDataContext.

Тестирование доступа к данным и EF с Highway.Data


Популярные ответы

Поставщик InMemory включен в EF7 (предварительная версия).

Вы можете использовать либо пакет NuGet , либо прочитать об этом в репозитории EF на GitHub (см. Источник ).



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему