четверг, 25 октября 2012 г.

Проверки. Часть 2. Сравнение сущностей


Представим, что у сравниваемых сущностей очень много свойств, хотя бы 5-10. В таком случае, если пользоваться вариантом, рассказанным в предыдущем сообщении, и если тест не пройдет, придется потратить какое-то время, чтобы из текста сообщения об ошибке определить, какие же свойства не совпали.  А нам так бы хотелось сравнивать объекты,  но чтобы в результате были показаны неожидаемые свойства сущности.


Есть библиотека, которая поможет нам в этом  – Microsoft Test Api.
1. Если нас  не устраивает сравнение классов по их публичным свойствам, и мы сами хотим настроить, какие свойства нужно сравнивать, а какие нет, нам нужно проделать следующее:

а).                      Сначала создадим граф сравнения объектов

Здесь создается корневой узел – соответствует самой сущности, которому в качестве дочерних узлов добавляются свойства – имя и электронная почта. Т.е. сравнение объектов у нас будет идти по этим полям. Как мы видим, сравнение достаточно гибко, можно указать, какие свойства включать для сравнения, какие нет.
б).   В класс ContactSummary добавим метод Compare для сравнения объектов, который возвращает коллекцию несовпадений свойств. 


2. Если нас устраивает сравнение по публичным свойствам (как в большинстве случаев и бывает), то пункт а) можно пропустить, а в пункте б) вместе ContactSummaryGraphFactory использовать PublicPropertyObjectGraphFactory

В итоге получаем код теста:


И результат:




Комментариев нет:

Отправить комментарий