Testing di un modulo Drupal 8
Parte VI del manuale pratico per la creazione di moduli di base in Drupal 8
Dall’.info ai test, solo le basi
Se hai seguito fin dall’inizio questo manuale pratico per la creazione di moduli di base in Drupal 8, ora siamo pronti per un po’ di controllo qualità. Se invece vuoi semplicemente saltare dentro e provare, puoi scaricare il modulo Lorem ipsum direttamente da Drupal.
Verifichiamo che il modulo funzioni correttamente scrivendo alcuni test personalizzati che possono essere eseguiti direttamente tramite 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', )); } }
I test iniziano estendendo la classe BrowserTestBase. È importante notare che Drupal esegue i test in un database di test, che viene creato, popolato secondo necessità e poi eliminato. Questo significa che puoi testare in ambienti di sviluppo, staging e persino — se osi! — in produzione.
Come puoi vedere sopra, il primo passo nei test è eseguire un po’ di configurazione iniziale definendo i moduli da testare (solo quello corrente), creando un utente di test e concedendogli i permessi necessari.
Successivamente testiamo l’accesso alla pagina fittizia di generazione testo:
/** * 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); }
E la form di configurazione:
/** * 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'), );
Poi testiamo l’invio del form di configurazione:
// 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.');
E verifichiamo che i nuovi valori siano presenti:
// 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', ); } }
Per eseguire i test:
1. abilita i moduli CORE: Testing e lo sviluppo Lorem ipsum
2. vai su admin/config/development/testing
3. seleziona il test “Loremipsum”
4. clicca su “Esegui test”
E questo è tutto per questa lezione! Se vuoi, prendi una copia di questo codice dalla pagina del progetto Lorem ipsum — tieni presente che nella versione attuale per sviluppatori è inclusa la tematizzazione. Inoltre, se hai domande, sentiti libero di scrivermi. Buona programmazione!