У меня есть настраиваемый объект контента и некоторые пользовательские проверки в форме объекта. валидатеформ
метод.
Теперь я «просто» хочу проверить свою реализацию валидатеформ
метод (или для начала я просто хочу проверить правильный идентификатор формы, но даже это не удается).
Основная проблема, с которой я сталкиваюсь на данный момент, — насмешка над моей собственной сущностью.
Вот несколько примеров кода и мое сообщение об ошибке
Это мой собственный метод validateForm:
общедоступная функция validateForm (массив и $ форма, FormStateInterface $ form_state): ContentEntityInterface {
$simpleField = $form_state->getValue('field_simplefield')[0]['value'];
если (preg_match('/^simpleRegEx$/', $simpleField)) {a
$form_state->setErrorByName('field_simplefield', $this->t('Недействительно'));
}
вернуть parent::validateForm($form, $form_state);
}
А это мой тест:
// Проверяем, что возвращается правильный ID формы
публичная функция testFormId() {
$container = новый ContainerBuilder();
$entityRepository = $this->prophesize(EntityRepositoryInterface::class);
$container->set('entity.repository', $entityRepository->reveal());
$entityTypeBundleInfo = $this->prophesize(EntityTypeBundleInfoInterface::class);
$container->set('entity_type.bundle.info', $entityTypeBundleInfo->reveal());
$time = $this->prophesize(Time::class);
$container->set('datetime.time', $time->reveal());
$form = new CustomEntityForm($entityRepository->открыть(), $entityTypeBundleInfo->открыть(), $time->открыть());
$this->assertEquals('module_name_settings_form', $form->getFormId());
}
Вылетает с ошибкой:
Ошибка: вызов функции-члена getEntityTypeId() при нулевом значении
путь/сеть/ядро/библиотека/Drupal/Core/Entity/EntityForm.php:79
path/web/profiles/contrib/a_profile/modules/emp_customentity/tests/src/Unit/CustomEntityFormTest.php:59
путь/поставщик/phpunit/phpunit/src/Framework/TestResult.php:726
путь/поставщик/phpunit/phpunit/src/Framework/TestSuite.php:677
путь/поставщик/phpunit/phpunit/src/Framework/TestSuite.php:677
путь/поставщик/phpunit/phpunit/src/TextUI/TestRunner.php:673
путь/поставщик/phpunit/phpunit/src/TextUI/Command.php:143
путь/поставщик/phpunit/phpunit/src/TextUI/Command.php:96
Есть ли довольно простой способ сделать это или мне нужно издеваться над всеми необходимыми службами (сущность.репозиторий
, entity_type.bundle.info
, дата/время.время
) И моя собственная сущность для вызова функции валидатеформ
в моем тесте?
И затем, если это решено, как, черт возьми, мне проверить метод validateForm?