Tôi có một thực thể nội dung tùy chỉnh và một số xác thực tùy chỉnh trong biểu mẫu thực thể xác thựcForm
phương pháp.
Bây giờ tôi "chỉ" muốn kiểm tra việc triển khai của mình xác thựcForm
(hoặc để bắt đầu, tôi chỉ muốn kiểm tra id biểu mẫu chính xác, nhưng ngay cả điều này cũng không thành công).
Chế nhạo thực thể tùy chỉnh của riêng tôi là vấn đề chính mà tôi gặp phải vào lúc này.
Dưới đây là một số ví dụ về mã và thông báo lỗi của tôi
Đây là phương thức validateForm tùy chỉnh của tôi:
chức năng công khai validateForm(mảng &$form, FormStateInterface $form_state): ContentEntityInterface {
$simpleField = $form_state->getValue('field_simplefield')[0]['value'];
nếu (preg_match('/^simpleRegEx$/', $simpleField)) {a
$form_state->setErrorByName('field_simplefield', $this->t('Không hợp lệ'));
}
trả về cha mẹ::validateForm($form, $form_state);
}
Và đây là thử nghiệm của tôi:
// Kiểm tra ID biểu mẫu chính xác được trả về
hàm công khai testFormId() {
$container = new 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->reveal(), $entityTypeBundleInfo->reveal(), $time->reveal());
$this->assertEquals('module_name_settings_form', $form->getFormId());
}
Nó không thành công với lỗi:
Lỗi: Gọi hàm thành viên getEntityTypeId() trên null
đường dẫn/web/lõi/lib/Drupal/Lõi/Thực thể/EntityForm.php:79
đường dẫn/web/profile/contrib/a_profile/modules/emp_customentity/tests/src/Unit/CustomEntityFormTest.php:59
đường dẫn/nhà cung cấp/phpunit/phpunit/src/Framework/TestResult.php:726
đường dẫn/nhà cung cấp/phpunit/phpunit/src/Framework/TestSuite.php:677
đường dẫn/nhà cung cấp/phpunit/phpunit/src/Framework/TestSuite.php:677
đường dẫn/nhà cung cấp/phpunit/phpunit/src/TextUI/TestRunner.php:673
đường dẫn/nhà cung cấp/phpunit/phpunit/src/TextUI/Command.php:143
đường dẫn/nhà cung cấp/phpunit/phpunit/src/TextUI/Command.php:96
Có cách nào khá dễ dàng để thực hiện việc này hay tôi phải chế nhạo tất cả các dịch vụ cần thiết (thực thể.repository
, entity_type.bundle.info
, ngày giờ.thời gian
) VÀ thực thể của riêng tôi để gọi hàm xác thựcForm
trong bài kiểm tra của tôi?
Và sau đó nếu điều này được giải quyết, làm thế quái nào để tôi kiểm tra phương thức validateForm?