Как лучше всего обращаться с методами преобразования при выполнении TDD? - PullRequest
1 голос
/ 02 августа 2011

Какова лучшая практика для работы с преобразованиями, которые происходят в методах при попытке сделать разработку управляемой тестами?

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

Другой вариант, о котором я подумал, - создать интерфейс, отвечающий за преобразования, и макетировать этот интерфейс при тестировании вызывающего метода.Там будет реализация, сидящая рядом с интерфейсом.Проблема в том, что кажется, что дополнительный код пишется только для выполнения преобразований, и при настройке контейнера IOC необходимо учитывать множество новых зависимостей.

Прекрасным примером является действие контроллера, котороенеобходимо преобразовать из модели представления в объект, который является входом для службы, к которой он подключается.Какая лучшая практика для этого?

Ответы [ 2 ]

1 голос
/ 02 августа 2011

Вы можете Moq для получения дополнительной информации, как использовать moq с TDD, проверьте ссылку ниже

TDD: введение в Moq

А также для получения дополнительной информации о TDD, проверьте ссылки ниже

TDD / BDD скринкаст / видео ресурсы

Улучшение дизайна и гибкости вашего проекта с помощью экстремальных методов программирования

Лучшие практики разработки через тестирование с использованием C # и RhinoMocks

0 голосов
/ 02 августа 2011

Я бы использовал Automapper .Он построен именно для этого сценария, и большая часть его ядра уже протестирована модулем.Вы можете написать несколько базовых модульных тестов, чтобы убедиться, что ваше преобразование всегда работает, но это, вероятно, не является приоритетом для других вещей, которые вы пытаетесь выполнить модульным тестом:)

...