Điểm:0

Kiểm tra đơn vị xác thựcForm của biểu mẫu thực thể nội dung tùy chỉnh

lá cờ ke

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?

lá cờ ke
Đây có phải là câu hỏi/vấn đề cụ thể không? Hay không ai kiểm tra việc triển khai validForm của họ?

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.