Для проекта у меня есть серия псевдорепозиториев, которые создают XML (они не являются настоящими репозиториями, но выполняют ту же роль, поэтому я использовал эту номенклатуру), вызывая некоторые XML-возвращающие хранимые процессы.Для целей моего проекта у меня также есть «Mappers» (опять же, они не true mappers ...), которые принимают XML в качестве входных данных и используют Linq для перевода необработанного XML в DTO.
Поскольку у меня есть маппер, мне кажется, что «хранилище» не должно проверять возвращаемое значение (так как это работа маппера; хранилище заботится только о том, чтобы получить какой-то XML обратно, вне зависимости от того, является ли XMLданные верны).Однако это приводит к тестам, которые буквально просто проверяют, что возвращаемое значение из «хранилища» не равно нулю.
По сути, каждый репозиторий реализует интерфейс, который имеет единственный метод с именем GetXml
, который возвращает документ XML.Реальная реализация выполняет вызов базы данных, но для теста у меня есть очень простой фиктивный класс, который просто возвращает пустой XML-документ.В конце концов мне нужно будет создать настоящий XML-файл, используя некоторые жестко запрограммированные значения для макета, но разве это нормально, что тесты репозитория по сути представляют собой одну строку: Assert.IsNotNull(repository.GetXml(), "Xml response was null");
Это то, чтоследует даже проверить, или есть лучший способ проверить это, не наступая на пальцы маппера?Я предполагаю, что с точки зрения дизайна я мог бы полностью удалить сопоставители и просто сделать так, чтобы хранилище выполняло сопоставление (или делало сопоставление внутренним по отношению к хранилищу).Я не делаю TDD, так как на самом деле у меня написан код, но я хочу создавать тесты, чтобы их было проще тестировать, и чтобы я мог показать своим коллегам преимущества тестов (в настоящее время мы не используем любой тип автоматизированного тестирования).
Я думаю, что я действительно спрашиваю об этом: нормально ли писать тест, который только выражает намерение разработчика кому-то, ктоможет использовать код, не заботясь о возвращенном значении?Прямо сейчас это то, что делают эти тесты: они говорят, в коде: «Я должен быть в состоянии создать класс XmlXXXRepository
, который реализует интерфейс с именем IXmlRepository
, принимает долго с именем quoteID
при создании и имеет метод, называемыйGetXml()
, который возвращает объект XmlDocument "и все.