Самый легкий способ читать из URL в строку в.NET

При создании модульных тестов для уровня доступа к данным данные должны извлекаться непосредственно из БД, а не из фиктивных объектов.

Примите во внимание следующее:

void IList<Customer> GetCustomers()
{
  List<Customer> res = new List<Customer>();

  DbCommand cmd = // initialize command
  IDataReader r = cmd.ExecuteQuery();

  while(r.read())
  {
     Customer c = ReadFiledsIntoCustomer(r);
     res.Add(c);
  }

  return res;
}

В модульном тесте для GetCustomers должен ли вызов cmd.ExecuteQuery () получить доступ к БД или его поведение должно быть имитировано?

Я считаю, что вы не должны издеваться над фактическим вызовом БД, если выполняется следующее:

  1. Тестовый сервер и схема существуют.
  2. Схема стабильна (имеется в виду, что вы не ожидаете существенных изменений в ней)
  3. У DAL нет умной логики: запросы строятся тривиально (конфигурируемые / хранимые процессы), а логика десериализации проста.

Исходя из моего опыта, большое преимущество этого подхода состоит в том, что вы начинаете взаимодействовать с БД на ранней стадии, испытывая «чувство», а не только «внешний вид». Это избавит вас от многих головных болей впоследствии и станет лучшим способом ознакомления со схемой.

Многие могут утверждать, что как только поток выполнения пересекает границы процесса, он становится модульным тестом. Я согласен, что у него есть свои недостатки, особенно когда БД недоступна, а затем вы не можете запустить UT.

Тем не менее, я считаю, что это должно быть правильным делом во многих случаях.

105
задан rein 12 June 2018 в 23:18
поделиться