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.
<?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.
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.
- Pokrenite testove, statičku analizu, Composer audit i frontend build.
- Napišite deployment i rollback naredbe.
- Dodajte smoke test početne, prijave, health i jedne zaštićene rute.
Za provjeru i nastavak