Я тестирую код модуляции, написанный против платформы 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 имеет право, где предложение и включить? Я предпочел бы вставить некоторые строки клиентов и некоторые строки заказов, а затем утверждать, что выбран правильный клиент и заказы заполнены.