Score:1

การทดสอบการทำงาน - สคีมาไม่สมบูรณ์ ยกเว้นไม่มีสคีมา

ธง id

ฉันกำลังดำเนินการทดสอบการทำงานครั้งแรกสำหรับโมดูลที่กำหนดเอง ทุกครั้งที่เรียกใช้การทดสอบการทำงาน ฉันได้รับข้อผิดพลาดเกี่ยวกับปัญหาโครงร่างการกำหนดค่า อย่างไรก็ตาม ฉันสับสนกับข้อความแสดงข้อผิดพลาด

สั่งการ

phpunit โมดูล/กำหนดเอง/worx_blog

ข้อความผิดพลาด

ข้อผิดพลาดของสคีมาสำหรับ editor.editor.full_html โดยมีข้อผิดพลาดต่อไปนี้:

editor.editor.full_html:settings.plugins.linkit ไม่มีสคีมา

การกำหนดค่าโมดูลของฉัน - ไฟล์ Conifg ของโมดูล

หากคุณดูที่ไฟล์คุณจะเห็นว่าไฟล์ ลิงค์ รายการอยู่ที่นั่น เลยไม่รู้ว่ามันหายไปหมายความว่าไง

miststudent2011 avatar
fr flag
คุณต้องเพิ่มไฟล์ schema.yml แบบนี้ https://git.drupalcode.org/sandbox/Bhanu951-3103712/-/blob/8.x-dev/testing_examples/config/schema/testing_examples.schema.yml
Score:1
ธง us

เนื่องจาก API การกำหนดค่า กล่าวว่า แต่ละโมดูลจำเป็นต้องกำหนดโครงร่างการกำหนดค่าในไฟล์ในไดเร็กทอรี config/schema ภายใต้ไดเร็กทอรีโมดูลระดับบนสุด ซึ่งใช้โดย Drupal core เพื่อตรวจสอบความถูกต้องของไฟล์คอนฟิกูเรชันและยืนยันว่าไม่ได้เสียหาย

ตัวอย่างเช่น โมดูล Book ใช้สคีมาต่อไปนี้สำหรับอ็อบเจ็กต์การกำหนดค่า (core/modules/book/config/schema/book.schema.yml)

# Schema สำหรับไฟล์การกำหนดค่าของโมดูลหนังสือ

หนังสือการตั้งค่า:
  ประเภท: config_object
  ป้ายกำกับ: 'การตั้งค่าหนังสือ'
  การทำแผนที่:
    Allow_types:
      ชนิด: ลำดับ
      ป้ายกำกับ: 'อนุญาตประเภทเนื้อหาในโครงร่างหนังสือ'
      ลำดับ:
        ประเภท: สตริง
        ป้ายกำกับ: 'ประเภทเนื้อหา'
    บล็อก:
      ประเภท: การทำแผนที่
      ป้ายกำกับ: 'บล็อค'
      การทำแผนที่:
        การนำทาง:
          ประเภท: การทำแผนที่
          ป้ายกำกับ: 'การนำทาง'
          การทำแผนที่:
            โหมด:
              ประเภท: สตริง
              ป้ายกำกับ: 'โหมด'
    child_type:
      ประเภท: สตริง
      ป้ายกำกับ: 'ประเภทเนื้อหาสำหรับเพจย่อย'

block.settings.book_navigation:
  พิมพ์: block_settings
  ป้ายกำกับ: 'บล็อกการนำทางหนังสือ'
  การทำแผนที่:
    block_mode:
      ประเภท: สตริง
      ป้ายกำกับ: 'บล็อกโหมดการแสดงผล'

ซึ่งแตกต่างจากไฟล์คอนฟิกูเรชัน ซึ่งอยู่ใน core/modules/book/config/installbook.settings.yml

Allow_types:
  - หนังสือ
บล็อก:
  การนำทาง:
    โหมด: 'ทุกหน้า'
child_type: หนังสือ

รหัสที่โยนข้อยกเว้นนั้นมีอยู่ใน ConfigSchemaChecker คลาส ใช้เพื่อใช้งานสมาชิกเหตุการณ์ที่เรียกใช้เมื่อมีการบันทึกออบเจกต์การกำหนดค่า

  ฟังก์ชั่นสาธารณะ onConfigSave (ConfigCrudEvent $event) {
    // ตรวจสอบการกำหนดค่าหากอยู่ในคอลเล็กชันเริ่มต้นเท่านั้น อื่น
    // คอลเลกชันอาจมีการกำหนดค่าที่ไม่สมบูรณ์ (เช่น ภาษา
    // แทนที่เท่านั้น). สิ่งเหล่านี้ไม่ถูกต้องในตัวเอง
    $saved_config = $event->getConfig();
    ถ้า ($saved_config->getStorage()->getCollectionName() != StorageInterface::DEFAULT_COLLECTION) {
      กลับ;
    }
    $name = $saved_config->getName();
    $data = $saved_config->get();
    $checksum = Crypt::hashBase64(ซีเรียลไลซ์($data));
    if (!in_array($name, $this->exclude) && !isset($this->checked[$name . ':' . $checksum])) {
      $this->ตรวจสอบแล้ว[$name ':' . $checksum] = จริง;
      $errors = $this->checkConfigSchema($this->typedManager, $name, $data);
      ถ้า ($ ข้อผิดพลาด === เท็จ) {
        โยน new SchemaIncompleteException("ไม่มี schema สำหรับ {$name}");
      }
      อื่น (is_array ($ ข้อผิดพลาด)) {
        $text_errors = [];
        foreach ($ ข้อผิดพลาดเป็น $key => $error) {
          $text_errors[] = ใหม่ FormattableMarkup('@key @error', [
            '@key' => $คีย์
            '@error' => $ข้อผิดพลาด
          ]);
        }
        โยน new SchemaIncompleteException("ข้อผิดพลาดของ Schema สำหรับ {$name} ที่มีข้อผิดพลาดต่อไปนี้: " .implode(', ', $text_errors));
      }
    }
  }
id flag
ในกรณีนี้ เหตุใดฉันจึงได้รับสคีมาที่ขาดหายไปในบางรายการใน config/install/ ymls เท่านั้น ไม่ใช่ในทุกรายการ
apaderno avatar
us flag
เนื่องจากคลาส [`ConfigSchemaChecker`](https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Config%21Development%21ConfigSchemaChecker.php/class/ConfigSchemaChecker/9.3.x) ไม่ ตรวจสอบทุกรายการและตัวจัดการเหตุการณ์จะถูกเรียกเฉพาะเมื่อมีการบันทึกวัตถุการกำหนดค่า

โพสต์คำตอบ

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