Score:0

ตรวจสอบการทดสอบหน่วยรูปแบบของแบบฟอร์มเอนทิตีเนื้อหาที่กำหนดเอง

ธง ke

ฉันมีเอนทิตีเนื้อหาที่กำหนดเองและการตรวจสอบความถูกต้องบางอย่างในแบบฟอร์มเอนทิตี ตรวจสอบแบบฟอร์ม กระบวนการ.

ตอนนี้ฉัน "แค่" ต้องการทดสอบการใช้งานไฟล์ ตรวจสอบแบบฟอร์ม วิธีการ (หรือสำหรับการเริ่มต้นฉันแค่ต้องการทดสอบรหัสแบบฟอร์มที่ถูกต้อง แต่ก็ล้มเหลว)

การเยาะเย้ยเอนทิตีที่กำหนดเองของฉันเองเป็นปัญหาหลักที่ฉันมีในขณะนี้

นี่คือตัวอย่างโค้ดบางส่วนและข้อความแสดงข้อผิดพลาดของฉัน นี่คือวิธีตรวจสอบรูปแบบที่กำหนดเองของฉัน:

ฟังก์ชันสาธารณะ validateForm (อาร์เรย์ &$form, FormStateInterface $form_state): ContentEntityInterface {

  $simpleField = $form_state->getValue('field_simplefield')[0]['value'];
  ถ้า (preg_match('/^simpleRegEx$/', $simpleField)) {a
    $form_state->setErrorByName('field_simplefield', $this->t('ไม่ถูกต้อง'));
  }

  ส่งคืนพาเรนต์::validateForm($form, $form_state);
}

และนี่คือการทดสอบของฉัน:

// ทดสอบว่า ID แบบฟอร์มที่ถูกต้องถูกส่งกลับ
ฟังก์ชั่นสาธารณะ testFormId () {
  $container = ใหม่ ContainerBuilder();
  $entityRepository = $this->prophesize(EntityRepositoryInterface::class);
  $container->set('entity.repository', $entityRepository->เปิดเผย());
  $entityTypeBundleInfo = $this->prophesize(EntityTypeBundleInfoInterface::class);
  $container->set('entity_type.bundle.info', $entityTypeBundleInfo->เปิดเผย());
  $time = $this->prophesize(เวลา::class);
  $container->set('datetime.time', $time->reveal());


  $form = New CustomEntityForm($entityRepository->reveal(), $entityTypeBundleInfo->reveal(), $time->reveal());
  $this->assertEquals('module_name_settings_form', $form->getFormId());
}

มันล้มเหลวด้วยข้อผิดพลาด:

ข้อผิดพลาด: การเรียกไปยังฟังก์ชันสมาชิก getEntityTypeId() เป็นโมฆะ
 เส้นทาง/เว็บ/core/lib/Drupal/Core/Entity/EntityForm.php:79
เส้นทาง/เว็บ/โปรไฟล์/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 flag
คำถาม/ปัญหานี้เฉพาะเจาะจงหรือไม่ หรือไม่มีใครทดสอบการใช้งาน validForm เลย?

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา