Bâtissez l'infrastructure de test complète d'une application SaaS de Réservation & Facturation en Laravel 11. Vous associerez les tests unitaires de calculs, les tests Feature avec Form Requests et validation Blade, l'isolation transactionnelle par RefreshDatabase et la sécurisation d'API REST par Sanctum.
Calcul des taxes, remises et règles métier sans démarrage du kernel pour une exécution en < 5ms.
Validation des FormRequests, gestion des sessions flash et assertion sur les variables de vues Blade.
Génération de fausses données avec Faker, assertions assertDatabaseHas et isolation par transaction.
Tests d'endpoints JSON avec Sanctum::actingAs(), interception Mail::fake() et Queue::fake().
Activez les suites Pest PHP pour simuler l'exécution en parallèle et observer l'évolution de la couverture globale.
⚠️ Seuil de 80% requis avant la mise en production.
Vérifiez la réservation d'un créneau, l'insertion en BDD et l'envoi du mail de confirmation.
use App\Models\User;
use App\Models\Booking;
use App\Mail\BookingConfirmedMail;
use Illuminate\Support\Facades\Mail;
use Laravel\Sanctum\Sanctum;
it('réserve un créneau et expédie le mail de confirmation', function () {
Mail::fake();
$client = User::factory()->create();
Sanctum::actingAs($client);
$response = $this->postJson('/api/bookings', [
'start_at' => now()->addDay()->toDateTimeString(),
'seats' => 2,
]);
$response->assertCreated();
$this->assertDatabaseHas('bookings', [
'user_id' => $client->id,
'seats' => 2,
]);
Mail::assertSent(BookingConfirmedMail::class, function ($mail) use ($client) {
return $mail->hasTo($client->email);
});
});test.yml) Automatisez l'exécution des tests Pest sous PHP 8.3 avec cache Composer et SQLite en mémoire.
name: Laravel Pest CI
on: [push, pull_request]
jobs:
pest-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.3'
extensions: mbstring, pdo_sqlite, bcmath
coverage: pcov
- name: Install Dependencies
run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist
- name: Run Pest Suite
run: ./vendor/bin/pest --parallel --coverage --min=80| Livrable | Outil Requis | Critère de Réussite | Pondération |
|---|---|---|---|
| 1. Tests Unitaires Calculs | Pest PHP TestCase | Règles tarifaires et taxes isolées sans boot du framework. | 25% |
| 2. Feature Tests & Form Requests | $this->post() / postJson() | Validation stricte des règles 422 et messages flash de redirection. | 25% |
| 3. Base de Données Eloquent | RefreshDatabase + Factories | Création par states, relations hasMany et assertDatabaseHas. | 25% |
| 4. API Sanctum & Fakes | Sanctum + Mail::fake | Simulation d'authentification et assertion d'envoi d'e-mails sans SMTP. | 25% |