Điểm:1

Làm cách nào tôi có thể tải di chuyển trong KernelTest?

lá cờ in

Tôi đang thử kiểm tra quá trình di chuyển bằng KernelTest, nhưng tôi gặp phải sự cố khi cố tải plugin di chuyển.

Di chuyển của tôi được xác định trong my_module/migrations/my_migration.yml. Trong KernelTest của tôi, tôi đã liệt kê my_moduledi chuyển bên trong mô-đun $ tài sản tĩnh.

Ở dạng tùy chỉnh, tôi sử dụng thông tin sau để tải plugin di chuyển:

/** @var \Drupal\migrate\Plugin\MigrationPluginManagerInterface $plugin_manager */
$plugin_manager = \Drupal::service('plugin.manager.migration');
$migration = $plugin_manager
  ->createInstance('MY_MIGRATION');
// Tiếp theo, tạo MigrateExecutable, v.v...

Tuy nhiên, khi tôi sử dụng cùng mã này trong KernelTest của mình, $migration luôn luôn là SAI. Tôi cảm thấy như vậy là do quá trình di chuyển của tôi không được tải (?) khi tôi kích hoạt mô-đun của mình trong thử nghiệm, nhưng tôi không chắc phải làm gì với nó. Tôi đang thiếu gì ở đây? Làm cách nào tôi có thể tải quá trình di chuyển của mình trong thử nghiệm?

sonfd avatar
lá cờ in
Tôi chắc hẳn đã có điều gì đó kỳ lạ xảy ra trong lớp kiểm tra của mình nên đã thất bại.
Điểm:0
lá cờ in

Mô-đun di chuyển cung cấp một lớp kiểm tra Kernel cơ sở, Drupal\Tests\migrate\Kernel\MigrateTestBase, trong đó có một getMigration() phương pháp nướng trong.

Ví dụ: điều này hoạt động và thử nghiệm vượt qua:

<?php

không gian tên Drupal\my_module\tests\Kernel;

sử dụng Drupal\migrate\Plugin\MigrationInterface;
sử dụng Drupal\Tests\migrate\Kernel\MigrateTestBase;

lớp MyMigrationTest mở rộng MigrateTestBase {

  $modules tĩnh được bảo vệ = [
    'my_module',
    'di chuyển',
    // vân vân...
  ];
  
  chức năng công khai testMigration(): void {
    $migration = $this->getMigration('MY_MIGRATION');

    $this->assertInstanceOf(MigrationInterface::class, $migration);
  }

}

Tuy nhiên, không cần thiết phải mở rộng Di chuyểnTestBase, điều này cũng hoạt động và vượt qua bài kiểm tra:

<?php

không gian tên Drupal\my_module\tests\Kernel;

sử dụng Drupal\KernelTests\KernelTestBase;
sử dụng Drupal\migrate\Plugin\MigrationInterface;

lớp MyMigrationTest mở rộng KernelTestBase {

  $modules tĩnh được bảo vệ = [
    'my_module',
    'di chuyển',
    // vân vân...
  ];
  
  chức năng công khai testMigration(): void {
    /** @var \Drupal\migrate\Plugin\MigrationPluginManagerInterface 
    $plugin_manager */
    $plugin_manager = \Drupal::service('plugin.manager.migration');
    $migration = $plugin_manager
      ->createInstance('MY_MIGRATION');

    $this->assertInstanceOf(MigrationInterface::class, $migration);
  }

}

Đă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.