На данный момент мои тесты состоят из физической настройки тестовых данных в базу данных для каждого теста, а затем разрешать объектам nettiers обращаться к базе данных и возвращать их по мере необходимости.
Очевидно, что это не особенно эффективно, и на данный момент мои 250 с лишним тестов занимают бежать около 10 минут, так что у меня есть рассматривал возможность добавления макетирования в свои тесты.
Хотя я почти уверен, что понимаю концепцию макетирования вызовов базы данных, у меня возникли проблемы с применением его к сетевым приложениям. в частности, поскольку он довольно сильно связан с базой данных.
Один из методов, который я хочу протестировать, выглядит следующим образом (для краткости немного сокращен):
Код: Выделить всё
public class InterfaceManagerService
{
public DataDocument SaveDataDocument(DataDocument entity)
{
var lookupEntity = DataRepository.DataDocumentProvider.GetByDocumentId(entity.DocumentId);
if (lookupEntity == null)
{
File fileEntity = new File();
fileEntity.Name = entity.Name;
var savedFileEntity = DataRepository.FileProvider.Save(fileEntity);
entity.FileId = savedFileEntity.FileId;
var savedEntity = DataRepository.DataDocumentProvider.Save(entity);
return (savedEntity);
}
}
}
Первая проблема, с которой я столкнулся, заключалась в том, следует ли мне создавать имитируемый экземпляр InterfaceManagerService, или DataRepository, или сами сущности (сущности nettiers действительно имеют интерфейс, который может быть полезным).
Вторая проблема заключается в том, как создать поддельный объект, который должен быть возвращен, поскольку nettiers помещает множество дополнительных свойств в объекты, которые в результате в больших и громоздких тестах, если я создаю поддельный экземпляр каждого ожидаемого объекта.
Думаю, в конечном итоге я ищу какое-то направление, как лучше всего писать модульные тесты для методов, использующих методы хранилища данных Nettiers, но чтобы избежать попадания базу данных, поскольку в настоящее время в Интернете о ней не так уж много информации.
Подробнее здесь: https://stackoverflow.com/questions/838 ... tory-calls
Мобильная версия