Test-Driven Development (TDD) in Laravel

Il Test-Driven Development (TDD) è una metodologia di sviluppo che enfatizza la scrittura di test automatizzati prima della scrittura del codice applicativo vero e proprio. Laravel, grazie alla sua integrazione con PHPUnit e strumenti come Laravel Dusk, rende il TDD accessibile ed efficiente.

Principi del TDD

Il ciclo di base del TDD si compone di tre fasi:

  • Red: scrivere un test che fallisce
  • Green: scrivere il codice minimo per far passare il test
  • Refactor: migliorare il codice mantenendo il test verde

Configurazione dell'ambiente di test

Laravel utilizza PHPUnit per i test unitari e feature. Per iniziare, assicurati di avere il file phpunit.xml configurato correttamente:


<phpunit bootstrap="bootstrap/autoload.php"
         colors="true"
         verbose="true">
    <testsuites>
        <testsuite name="Feature">
            <directory>./tests/Feature</directory>
        </testsuite>
        <testsuite name="Unit">
            <directory>./tests/Unit</directory>
        </testsuite>
    </testsuites>
</phpunit>
  

Scrivere un test

Puoi creare un test usando Artisan:

php artisan make:test CreatePostTest

Un semplice test per creare un post potrebbe essere:


use Tests\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;

class CreatePostTest extends TestCase
{
    use RefreshDatabase;

    public function test_a_post_can_be_created()
    {
        $response = $this->post('/posts', [
            'title' => 'Un titolo di prova',
            'body' => 'Contenuto del post di prova.'
        ]);

        $response->assertStatus(302);
        $this->assertDatabaseHas('posts', [
            'title' => 'Un titolo di prova'
        ]);
    }
}
  

Implementare il codice

Dopo aver eseguito il test e visto che fallisce, implementa la logica nel controller:


public function store(Request $request)
{
    Post::create($request->only(['title', 'body']));
    return redirect('/posts');
}
  

Vantaggi del TDD

  • Aiuta a progettare codice più modulare e testabile
  • Previene bug regressivi
  • Documenta il comportamento atteso del software

Conclusione

Praticare il TDD in Laravel è un investimento nel tempo che porta a un codice più affidabile e manutenibile. Integrando i test nel ciclo di sviluppo, puoi affrontare la crescita del progetto con maggiore sicurezza.

Torna su