J'ai créé un back pour mon site de test cependant, pendant le test, cela me retourne toujours un erreur 404. Voici mon controlleur :
1<?php 2 3namespace App\Http\Controllers; 4 5use Illuminate\Http\Request; 6use App\Http\Requests\CreateLocationRequest; 7use App\Models\Voiture; 8use App\Models\Location; 9use App\Models\Client;10 11class LocationVoitureController extends Controller12{13 public function index()14 {15 $cars = Voiture::all();16 return view('cars.index', compact('cars'));17 }18 19 public function creationRental(CreateLocationRequest $request)20 {21 dd($request->all());22 // Validez les données de la requête si nécessaire23 24 $rental = new Location();25 $rental->voiture_id = $request->input('voiture_id');26 $rental->client_id = $request->input('client_id');27 $rental->date_depart = $request->input('date_depart');28 $rental->date_retour = $request->input('date_retour');29 $rental->lieu_depart = $request->input('lieu_depart');30 $rental->lieu_depart_detaille = $request->input('lieu_depart_detaille');31 $rental->lieu_retour = $request->input('lieu_retour');32 $rental->lieu_retour_detaille = $request->input('lieu_retour_detaille');33 $rental->hotel = $request->input('hotel');34 $rental->souhait = $request->input('souhait');35 $rental->assurance = $request->input('assurance');36 $rental->payement = $request->input('payement');37 38 $rental->save();39 40 return response()->json(['message' => 'Location de voiture créée avec succès'], 200);41 //return redirect()->route('cars.index');42 }43 44 public function showRental($id)45 {46 $rental = Location::findOrFail($id);47 return view('rentals.show', compact('rental'));48 }49}
et voici mon route dans api.php :
1<?php 2 3use Illuminate\Http\Request; 4use Illuminate\Support\Facades\Route; 5use App\Http\Controllers\LocationVoitureController; 6 7/* 8|-------------------------------------------------------------------------- 9| API Routes10|--------------------------------------------------------------------------11|12| Here is where you can register API routes for your application. These13| routes are loaded by the RouteServiceProvider and all of them will14| be assigned to the "api" middleware group. Make something great!15|16*/17 18Route::middleware('auth:sanctum')->get('/user', function (Request $request) {19 return $request->user();20});21 22Route::post('/location/create', [LocationVoitureController::class, 'creationRental'])->name('location.create');
Voici mon model :
1<?php 2 3namespace App\Models; 4 5use Illuminate\Database\Eloquent\Factories\HasFactory; 6use Illuminate\Database\Eloquent\Model; 7 8class Location extends Model 9{10 use HasFactory;11 12 protected $fillable = ['voiture_id', 'client_id', 'date_depart', 'date_retour', 'lieu_depart', 'lieu_retour', 'assurance', 'payement'];13 14 public function voiture()15 {16 return $this->belongsTo(Voiture::class);17 }18 19 public function client()20 {21 return $this->belongsTo(Client::class);22 }23}
et pour terminer voici mon fichier test :
1<?php 2 3namespace Tests\Feature; 4 5use Illuminate\Foundation\Testing\RefreshDatabase; 6use Illuminate\Foundation\Testing\WithFaker; 7use Tests\TestCase; 8use App\Http\Requests\CreateLocationRequest; 9use App\Http\Controllers\LocationVoitureController;10 11class PostTest extends TestCase12{13 use RefreshDatabase;14 15 public function testCreateRental()16 {17 $this->withoutMiddleware(\App\Http\Middleware\Authenticate::class);18 // Préparation des données de test19 $requestData = [20 'voiture_id' => 18,21 'client_id' => 18,22 'date_depart' => '2024-02-15 08:00:00',23 'date_retour' => '2024-02-20 20:00:00',24 'lieu_depart' => 'Majunga',25 'lieu_retour' => 'Tana',26 'lieu_depart_detaille' => 'Amborovia',27 'lieu_retour_detaille' => 'Ivato',28 'hotel' => 'Brazzers',29 'souhait' => 'Je veux un bisou',30 'assurance' => 'ABC',31 'payement' => 'VISA'32 ];33 34 // Exécution de la requête POST35 $response = $this->post('/location/create', $requestData);36 37 // Assertion sur le statut de la réponse38 $response->assertStatus(200); // Vous pouvez ajuster selon le statut attendu après une redirection39 }40}
Quelqu'un peut m'aider?
2 réponses
Mathieu De Gracia, Il y a 9 mois
Hi,
Pour visualiser les routes de ton application, tu peux faire la commande suivante :
1php artisan route:list
Tu vas p'tete y voir une anomalie provoquant ton 404
William Suppo, Il y a 8 mois
Salut,
Les routes dans le fichiers api.php sont préfixées de /api
Essaie de modifier ton test comme ceci :
1$response = $this->post('/api/location/create', $requestData);