Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll

Тестирование модуля Drupal 8

26/04/2020, by maria

Часть VI практического руководства по созданию базовых модулей Drupal 8
От .info к тестам, только основы

Если вы с самого начала следовали этому практическому руководству по созданию базовых модулей Drupal 8, теперь мы готовы к некоторому контролю качества. Если вы просто хотите прыгнуть и играть вместе, вы можете получить модуль Lorum ipsum прямо из Drupal.

Давайте проверим, что модуль работает как положено, написав несколько собственных тестов, которые можно запустить через сам 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. зайдите в админ/конфиг/разработка/тестирование
3. Выберите тест «Loremipsum»
4. нажмите «Выполнить тесты»

И это все для этого урока! Если вы хотите, возьмите копию этого кода на странице проекта Lorem ipsum - имейте в виду, что в текущей версии разработчика есть встроенная тематика. Кроме того, если у вас есть какие-либо вопросы, не стесняйтесь, напишите мне. Удачного кодирования!

Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.