ОБНОВЛЕНО
Первое, на что следует обратить внимание, это то, что класс stati c не может быть проверен юнитом. Таким образом, метод, подлежащий испытанию, должен быть изменен, как показано ниже. Кроме того, интерфейс dbcontext т.е. IPracticeEntities4
, который реализован в классе PracticeEntities4
, должен быть внедрен, чтобы его можно было смоделировать.
public class PracticeEntities4:IPracticeEntities4, DbContext
{
....
}
public class ClassMethod2BTested
{
IPracticeEntities4 _context; //declare the context
public ClassMethod2BTested(IPracticeEntities4 context) // inject the context
{
_context=context; // set the context to local variable
}
public CustomersOrder OrderBuild(OrderDto dto)
{
//using (var context = new PracticeEntities4()) // remove this
{
var oldStoreId = _context.Stores.FirstOrDefault(e => e.Code == dto.StoreCode).Id;
var oldCustomerId = _context.Customers.FirstOrDefault(e => e.Code dto.CustomerCode).Id;
return new CustomersOrder()
{
OrderDate = Convert.ToDateTime(dto.OrderDate),
OrderStatus = dto.OrderStatus,
DeliveryDate = Convert.ToDateTime(dto.DeliveryDate),
CustomerId = oldCustomerId,
StoreId = oldStoreId,
Code = dto.Code
};
};
}
}
Теперь вышеприведенный метод можно объединить проверенным.
Для модульного теста, пожалуйста, проверьте образец здесь: Mocking EF DbContext с Moq
Добавлено
Пожалуйста, проверьте этот код : github