Тож у мене є наступний фрагмент коду, який використовується у всій моїй системі. Зараз ми пишемо одиничні тести заднім числом (краще пізніше, ніж ніколи не було моїм аргументом), але я не бачу, як це було б перевірено?
public function validate($value, Constraint $constraint)
{
$searchEntity = EmailAlertToSearchAdapter::adapt($value);
$queryBuilder = SearcherFactory::getSearchDirector($searchEntity->getKeywords());
$adapter = new SearchEntityToQueryAdapter($queryBuilder, $searchEntity);
$query = $adapter->setupBuilder()->build();
$totalCount = $this->advertType->count($query);
if ($totalCount >= self::MAXIMUM_MATCHING_ADS) {
$this->context->addViolation(
$constraint->message
);
}
}
Концептуально це має застосовуватися до будь-якої мови, але я використовую PHP. Код просто створює об’єкт запиту ElasticSearch на основі Search
об'єкта, який, в свою чергу, будується з EmailAlert
об'єкта. Ці Search
та EmailAlert
і є лише POPO.
Моя проблема полягає в тому , що я не розумію , як я можу знущатися поза SearcherFactory
(який використовує статичний метод), ні SearchEntityToQueryAdapter
, що потрібні результати SearcherFactory::getSearchDirector
і на Search
екземпляр. Як я ввожу щось, що виходить із результатів методу? Можливо, є якась модель дизайну, про яку я не знаю?
Дякуємо за будь-яку допомогу!
::
це статичні методи.
::
викликає статичний метод на класі.
$this->context->addViolation
дзвінка, всерединіif
.