Я создал фабрику и ряд спецификаций, чтобы создать и проверить совокупный корень. В настоящее время у меня есть некоторые тесты для фабрики, которые называют спецификации на продукте фабрики, но я задаюсь вопросом, достаточно ли это. Могло бы быть лучше с точки зрения дизайна связать фабрику со спецификациями, он - продукт, так как они тесно взаимосвязаны.
Если спецификация для совокупного корневого продукта используется для проверки, а не для создания, имеет смысл называть его из фабрики?
Или действительно ли модульный тест достаточно хорош?
Ответ, вероятно, зависит от того, как вы используете свои спецификации, и от того, сильно ли нарушается код в процессе создания .
Спецификации могут использоваться практически для всего, что вы можете придумать. На базовом уровне спецификации - это просто управляемые условные операторы, инкапсулированные в объекты. Везде, где в коде используется условная логика, можно было бы, вероятно, преобразовать эту логику в спецификации, если бы разработчик почувствовал это. было некоторое оправдание.
Нет ничего плохого в использовании спецификаций в реальном коде, если это делает код более удобным, обслуживаемым или читаемым.Также нет ничего плохого в создании спецификаций, которые используются только в тестах.Спецификации - это простые объекты, соединение кода со спецификациями тем или иным способом, похоже, не оказывает большого негативного влияния на обслуживание или возможность повторного использования из-за относительной простоты большинства спецификаций.
Если спецификация агрегата корневой продукт используется для проверка, а не создание, имеет ли смысл называть это из внутри фабрики?
Да, но, вероятно, только если у вас возникли проблемы или вы не уверены в продукте фабрики.
Или юнит-тест достаточно хорош?
Да, вызов спецификации из юнит-теста может быть достаточно хорошим, чтобы доказать пригодность фабричного продукта (по крайней мере, в отношении того, что охватывает спецификация). Однако я не часто использую спецификации в своих модульных тестах, только когда мне что-то сложно или это часть логики, которую я тестирую.