Рейтинг:0

Модульный тест validateForm формы сущности пользовательского контента

флаг ke

У меня есть настраиваемый объект контента и некоторые пользовательские проверки в форме объекта. валидатеформ метод.

Теперь я «просто» хочу проверить свою реализацию валидатеформ метод (или для начала я просто хочу проверить правильный идентификатор формы, но даже это не удается).

Основная проблема, с которой я сталкиваюсь на данный момент, — насмешка над моей собственной сущностью.

Вот несколько примеров кода и мое сообщение об ошибке Это мой собственный метод 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?

флаг ke
Является ли этот вопрос/проблема конкретным? Или никто не тестирует свои реализации validForm?

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

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.