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