<?> PHP NOVA invictum.hr
Izdanje 2026.
Poglavlje 46

Testiranje i deployment

Zaključujemo Laravel dio testovima važnih tokova i produkcijskim deploymentom koji cacheira, migrira i provjerava aplikaciju.

34 min čitanja Napredno razina PHP 8.5 ciljna verzija

Nakon ovog poglavlja

Što ćete znati napraviti

  • Napisati feature test s bazom i unit test poslovnog pravila.
  • Koristiti factoryje bez ovisnosti o slučajnim podacima.
  • Pripremiti Laravel 13 za siguran produkcijski deploy.

Aplikacija izvana

Zahtjev, baza i autorizacija u jednom dokazu

Feature testovi najviše odgovaraju web aplikaciji jer prolaze routing, middleware, validaciju i odgovor. RefreshDatabase izolira stanje, factory stvara samo potrebne zapise, a assertDatabaseHas provjerava trajni rezultat.

Feature test
<?php

use Illuminate\Foundation\Testing\RefreshDatabase;

uses(RefreshDatabase::class);

it('allows an author to create a draft', function (): void {
    $user = User::factory()->create();

    $response = $this->actingAs($user)->post(route('articles.store'), [
        'title' => 'Siguran Laravel',
        'body' => 'Sadržaj članka',
    ]);

    $response->assertRedirect();
    $this->assertDatabaseHas('articles', [
        'user_id' => $user->id,
        'title' => 'Siguran Laravel',
        'status' => 'draft',
    ]);
});

Rizik prije količine

Sretni put, zabrane i rubovi

Testirajte pravila koja bi skupo pukla: ovlasti, novac, prijelaze statusa, validaciju, idempotentnost jobova i API ugovor. Posebno dokažite da neprijavljen i pogrešan korisnik ne mogu izvesti radnju.

Ne oslanjajte se na redoslijed testova ni stvarne vanjske servise. Laravelovi fakeovi za mail, queue, storage i HTTP klijent potvrđuju namjeru bez slanja stvarne poruke.

Optimiziran i mjerljiv rad

Cache, migracije, workeri i health

Produkcijski web-server mora slati sav promet u public/index.php i nikada posluživati korijen projekta. storage i bootstrap/cache moraju biti zapisivi procesu aplikacije, dok izvorni kod ne treba biti globalno zapisiv.

Deployment instalira produkcijske ovisnosti, pokreće migracije uz --force, optimizira konfiguraciju/rute/poglede i ponovno pokreće dugotrajne queue workere. Laravelov health route može poslužiti load balanceru, ali ovisnosti provjeravamo promišljeno kako kvar pomoćnog servisa ne bi srušio sve instance.

Laravel deployment koraci
composer install --no-dev --prefer-dist --optimize-autoloader --no-interaction
php artisan migrate --force
php artisan optimize
php artisan storage:link
php artisan queue:restart
php artisan about --only=environment

Primijenite naučeno

Vježba: Release kandidat

Pripremite završni Laravel projekt kao da ga sutra objavljujete.

  1. Pokrenite testove, statičku analizu, Composer audit i frontend build.
  2. Napišite deployment i rollback naredbe.
  3. Dodajte smoke test početne, prijave, health i jedne zaštićene rute.

Za provjeru i nastavak

Službeni izvori