Bonjour,
Voila je rencontre un petit problème avec mon code.
Je teste la page de profil d'un utlisateur, Je vérifier que le paramètre dans ma fonction view de mon controller soi bien passé dans l'url.
public function view($name)
{
// requête pour trouver un utilisateur avec le paramètre demandé
return view('users.view');
}
Code de mon teste
public function testGetAProfilofAnUser()
{
$user = factory(User::class)->create(['confirmed' => 1, 'confirmation_token' => null, 'name' => 'test245']);
$response = $this->call('GET','/profil',['name' => $user->name]);
$this->assertEquals(200, $response->getStatusCode(), $response);
}
La route que je teste :
Route::get('/profil/{name}', 'UsersController@view');
Avec le teste suivant. Je veux avoir un status 200. La route fonctionne bien.
J'ai une erreur 404 au lieu de 200.
NotFoundHttpException in RouteCollection.php line 161
Il ne réussi pas trouver la route et pourtant elle écrit dans mon fichier des routes.
Merci de votre aide.
Bonjour, je pense que dans ta fonction de test testGetAProfilofAnUser, la manière dont tu passes le paramètre name à la methode call n'est pas bonne, essai de le mettre directement dans l'url par exemple:
$response = $this->call('GET','/profil/'.$user->name);
Est-ce que c'est la bonne façons pour passer un paramètre pour tester? Ou c'est la technique d'avant?
TestResponse call(string $method, string $uri, array $parameters = array(), array $cookies = array(), array $files = array(), array $server = array(), string $content = null)
Voici la description de la méthode call et je sais pas si le $user->name tu le mets directement dans l'uri ou dans le tableau des paramètres.
As tu testé le code? Si oui qu'est ce que ça a donné??
Quand je mettais dans le tableau des paramètre le teste échoue, mais quand je l'essais avec ta solution ça fonctionne. Dans le router qu'il faut passer des paramètre d'une certaine façons.
// exemple d'une route avec des paramètre
Route::get('user/{id}', function ($id) {
return 'User '.$id;
});
C'est jusque moi j'ai mis la logique du code dans mon controller UsersController pour éviter que ma classe des route sois polué par trop de code.
Si ça fonctionne avec ce code dans le router, celà devrait bien fonctionner avec le controller, je vois pas de problème à ça.