Puncte:1

Cum pot încărca o migrare într-un KernelTest?

drapel in

Încerc să testez o migrare cu un KernelTest, dar mă confrunt cu o problemă când încerc să încarc pluginul de migrare.

Migrația mea este definită în my_module/migrations/my_migration.yml. În KernelTest-ul meu, am enumerat modulul_meu și migra în $module proprietate statică.

Într-un formular personalizat, folosesc următoarele pentru a încărca un plugin de migrare:

/** @var \Drupal\migrate\Plugin\MigrationPluginManagerInterface $plugin_manager */
$plugin_manager = \Drupal::service('plugin.manager.migration');
$migration = $plugin_manager
  ->createInstance('MY_MIGRATION');
// Apoi, creați MigrateExecutable, etc...

Cu toate acestea, când folosesc același cod în KernelTest, $migrare Este mereu FALS. Simt că acest lucru se datorează faptului că migrarea mea nu este încărcată (?) când îmi activez modulul în test, dar nu sunt sigur ce să fac. Ce îmi lipsește aici? Cum îmi pot încărca migrarea în test?

sonfd avatar
drapel in
Trebuie să fi avut ceva ciudat în cursul meu de testare care a făcut ca asta să eșueze.
Puncte:0
drapel in

Modulul de migrare oferă o clasă de testare a kernelului de bază, Drupal\Tests\migrate\Kernel\MigrateTestBase, care are a getMigration() metoda coaptă în.

De exemplu, aceasta funcționează și testul trece:

<?php

spațiu de nume Drupal\modulul_meu\teste\Kernel;

utilizați Drupal\migrate\Plugin\MigrationInterface;
utilizați Drupal\Tests\migrate\Kernel\MigrateTestBase;

clasa MyMigrationTest extinde MigrateTestBase {

  $module statice protejate = [
    „modulul_meu”,
    'migra',
    // etc...
  ];
  
  public function testMigration(): void {
    $migration = $this->getMigration('MY_MIGRATION');

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

}

Cu toate acestea, nu este necesar să se prelungească MigrateTestBase, aceasta funcționează și testul trece:

<?php

spațiu de nume Drupal\modulul_meu\teste\Kernel;

utilizați Drupal\KernelTests\KernelTestBase;
utilizați Drupal\migrate\Plugin\MigrationInterface;

clasa MyMigrationTest extinde KernelTestBase {

  $module statice protejate = [
    „modulul_meu”,
    'migra',
    // etc...
  ];
  
  public function 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);
  }

}

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.