Можно ли вызывать спецификации из агрегатной фабрики для проверки или этот вызов проверки относится к модульному тесту (DDD)? - PullRequest
8 голосов
/ 21 апреля 2010

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

Если спецификация для совокупного корневого продукта используется для проверки, а не для создания, имеет ли смысл вызывать ее изнутри фабрики?

Или достаточно ли модульного теста?

1 Ответ

2 голосов
/ 18 августа 2010

Ответ, вероятно, зависит от того, как вы используете свои спецификации, и много ли кодов ломается в процессе создания.

Технические характеристики можно использовать практически для всего, что только можно придумать. На базовом уровне спецификации - это просто управляемые условные операторы, инкапсулированные в объекты. Везде, где код использует условную логику, вероятно, можно преобразовать эту логику в спецификации, если разработчик посчитал, что есть какое-то оправдание.

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

Если спецификация для агрегата Корневой продукт используется для проверка, а не для создания, имеет ли смысл называть это из внутри завода?

Да, но, вероятно, только если у вас возникли проблемы или неуверенность в продукте фабрики.

Или достаточно ли модульного теста?

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

...