Методы тестирования, использующие локальные ссылки - PullRequest
0 голосов
/ 01 ноября 2011

В нашей среде мы используем пользовательский доступ к данным для доступа к нашей устаревшей базе данных Oracle. Это позволяет нам выполнять вызовы хранимых процедур и возвращать результаты в виде DataTable или в виде списка пар имя / значение, если возвращаемые данные представляют собой только одну строку данных. При каждом вызове от нас требуется создать экземпляр нового объекта из этой библиотеки, а затем убедиться, что он удаляется после завершения.

Например, мы могли бы сделать что-то вроде этого:

    DataReader reader = new DataReader("StoredProcedureName");
    reader.AddParameter(name, DbType.Array, ParameterDirection.Input, data);
    DataTable dt;
    try
    {
        dt = reader.Open();
    }
    finally
    {
        reader.Dispose();
    }

Моя проблема в том, что я не уверен, как тестировать методы, которые делают вызовы базы данных, используя эту библиотеку. Я относительно новичок в модульном тестировании и стараюсь использовать его усердно. Я начал использовать moq и написал кучу тестов для моего другого кода приложения. Я не знаю, как я могу издеваться над библиотекой базы данных. Имеет ли смысл создавать фабричный объект, который будет создавать новые экземпляры устройства чтения данных, а затем издеваться над фабрикой?

Заранее спасибо.

1 Ответ

1 голос
/ 01 ноября 2011

Вы не сможете "модульно" протестировать самый низкий уровень вашего кода (то есть тонкую оболочку вокруг ADO.Net, которую вы называете своим уровнем доступа к данным). В каждом другом слое вы можете использовать насмешку, чтобы изолировать его, но для того, чтобы протестировать самый нижний слой, вы должны просто написать «системные» тесты, которые действительно попадут в реальную базу данных (это потребует настройки, чтобы вы могли воссоздать БД в известное состояние как часть тестового прогона - Проекты баз данных отлично подходят для этого).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...