Тестирование модуля 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 - имейте в виду, что в текущей версии разработчика есть встроенная тематика. Кроме того, если у вас есть какие-либо вопросы, не стесняйтесь, напишите мне. Удачного кодирования!