logo

パレット - カラフルに🎨

Palette — ビジュアルページビルダー、デザインの専門知識は不要です。

ライブデモ パレットをダウンロード

Scroll
26/04/2020, by maria

Menu

第VI部 Drupal 8の基本モジュール作成の実践ガイド
.infoからテストまで、基本のみ

このDrupal 8の基本モジュール作成の実践ガイドを最初からフォローしてきたなら、そろそろ品質管理の段階です。飛び込んで一緒にプレイしたいだけなら、Drupalから直接Lorum ipsumモジュールを入手できます。

Drupal自体を通じて実行できる独自のテストをいくつか書いて、モジュールが正しく動作することを確認しましょう。

/tests/src/Functional/LoremIpsumTest.php

<?php

namespace Drupal\Tests\loremipsum\Functional;

use Drupal\Tests\BrowserTestBase;

/**
 * Tests for the Lorem Ipsum module.
 *
 * @group loremipsum
 */
class LoremIpsumTests extends BrowserTestBase {

  /**
   * Modules to install.
   *
   * @var array
   */
  protected static $modules = array('loremipsum');

  /**
   * A simple user.
   *
   * @var \Drupal\user\Entity\User
   */
  private $user;

  /**
   * Perform initial setup tasks that run before every test method.
   */
  public function setUp() {
    parent::setUp();
    $this->user = $this->drupalCreateUser(array(
      'administer site configuration',
      'generate lorem ipsum',
    ));
  }
}

テストはBrowserTestBaseクラスを拡張することから始まります。重要なのは、Drupalがテストをテストデータベースで実行するということです。このデータベースは作成され、必要に応じて投入され、その後破棄されます。つまり、開発環境、ステージング環境、さらには(勇気があれば!)本番環境でもテストできます。

上記のとおり、テストの最初のタスクは、テストするモジュールを定義し(ここでは実際のものだけ)、テストユーザーを作成し、必要な権限を与えることによる初期セットアップの実行です。

次に、モックのテキスト生成ページへのアクセスをテストします:

/**
   * Tests that the Lorem ipsum page can be reached.
   */
  public function testLoremIpsumPageExists() {
    // Login.
    $this->drupalLogin($this->user);

    // Generator test:
    $this->drupalGet('loremipsum/generate/4/20');
     $this->assertSession()->statusCodeEquals(200);
  }

そして設定フォーム:

  /**
   * Tests the config form.
   */
  public function testConfigForm() {
    // Login.
    $this->drupalLogin($this->user);

    // Access config page.
    $this->drupalGet('admin/config/development/loremipsum');
     $this->assertSession()->statusCodeEquals(200);
    // Test the form elements exist and have defaults.
    $config = $this->config('loremipsum.settings');
    $this->assertSession()->fieldValueEquals(
      'page_title',
      $config->get('loremipsum.page_title'),
    );
    $this->assertSession()->fieldValueEquals(
      'source_text',
      $config->get('loremipsum.source_text'),
    );

次に、送信できる設定フォームをテストします

   // Test form submission.
    $this->drupalPostForm(NULL, array(
      'page_title' => 'Test lorem ipsum',
      'source_text' => 'Test phrase 1 \nTest phrase 2 \nTest phrase 3 \n',
    ), t('Save configuration'));
    $this->assertSession()->pageTextContains('The configuration options have been saved.');

そして、新しい値が存在することをアサートします:

    // Test the new values are there.
    $this->drupalGet('admin/config/development/loremipsum');
    $this->assertSession()->statusCodeEquals(200);
    $this->assertSession()->fieldValueEquals(
      'page_title',
      'Test lorem ipsum',
    );
    $this->assertSession()->fieldValueEquals(
      'source_text',
      'Test phrase 1 \nTest phrase 2 \nTest phrase 3 \n',
    );
  }

}

テストを実行するには
1. COREモジュールのテストと開発を有効にします:Lorem ipsum
2. admin/config/development/testingに移動します
3. 「Loremipsum」テストを選択します
4. 「テストを実行」をクリックします

これでこのレッスンは終わりです!よければ、Lorem ipsumプロジェクトページでこのコードのコピーを入手してください。ただし、現在の開発者バージョンには組み込みのサンプリングが含まれていることに注意してください。また、質問があれば、遠慮なく私に連絡してください。楽しいコーディングを!