Тестирование модуля Drupal 8
Часть 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.