У меня есть простой стандартный репозиторий, который загружает составную сущность из базы данных. Он внедряет все зависимости, которые ему нужны для чтения полного дерева сущностей из базы данных через IDbConnection
(что дает доступ к хранилищу для IDbCommand
, IDbTransaction
, IDataReader
), которые я мог бы высмеять.
public class SomeCompositionRootEntityRepository :
IRepository<SomeCompositionRoot>
{
public RecipeRepository(IDbConnection connection) { ... }
public void Add(SomeCompositionRootEntity item) { ... }
public bool Remove(SomeCompositionRootEntity item) { ... }
public void Update(SomeCompositionRootEntity item) { ... }
public SomeCompositionRootEntity GetById(object id) { ... }
public bool Contains(object id) { ... }
}
Вопрос в том, как мне написать хороший тест для этого? Если я хочу проверить, что хранилище прочитало все дерево объектов и правильно его прочитало, мне нужно было бы написать огромный макет, который записывает и проверяет чтение каждого свойства каждого объекта в дереве. Это действительно путь?
Обновление:
Я думаю, что мне нужно реорганизовать мой репозиторий, чтобы разбить его функциональность и модульное тестирование на более мелкие модули. Как это можно сделать?
Я уверен, что не хочу писать модульный тест, который включает чтение и запись из реальной базы данных и в нее.