Maison > cadre php > Laravel > le corps du texte

Présentation du test unitaire Laravel : simulation d'utilisateurs authentifiés

藏色散人
Libérer: 2021-04-25 08:53:34
avant
1604 Les gens l'ont consulté

Test unitaire Laravel : simuler un utilisateur authentifié

Lors de l'écriture de tests unitaires dans Laravel, vous rencontrez souvent le besoin de simuler des utilisateurs authentifiés, comme la création de nouveaux articles, la création de commandes, etc. Alors, comment implémenter cela dans le test unitaire de Laravel ?

Solution officielle

Le chapitre sur les tests dans la documentation officielle de Laravel mentionne :

Bien sûr, une utilisation courante de la session consiste à maintenir l'état de l'utilisateur authentifié. La méthode fournit un moyen simple d'authentifier un utilisateur donné en tant qu'utilisateur actuel. Par exemple, nous pouvons utiliser une fabrique de modèles pour générer et authentifier un utilisateur :
<?php

use App\User;

class ExampleTest extends TestCase
{
    public function testApplication()
    {
        $user = factory(User::class)->create();

        $response = $this->actingAs($user)
                         ->withSession(['foo' => 'bar'])
                         ->get('/');
    }
}
Copier après la connexion

En fait, en utilisant Laravel Testing IlluminateFoundationTestingConcernsImpersonatesUsers actingAs et be méthodes dans Trait. Une fois

défini, dans le code de test suivant, nous pouvons obtenir l'utilisateur actuellement authentifié via des méthodes telles que auth()->user().

Faux utilisateur authentifié

Dans l'exemple officiel, factory est utilisé pour créer un vrai utilisateur, mais le plus souvent, nous voulons simplement utiliser un faux utilisateur comme utilisateur authentifié, au lieu de créer. un véritable utilisateur via l'usine.

Créez un nouveau User calss:

use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    protected $fillable = [
        'id', 'name', 'email', 'password',
    ];
}
Copier après la connexion

dans le répertoire tests Vous devez ajouter l'attribut $fillable dans id Sinon, une exception sera levée : IlluminateDatabaseEloquentMassAssignmentException: id.

Ensuite, forgez une authentification utilisateur :

$user = new User([
    'id' => 1,
    'name' => 'ibrand'
]);

 $this->be($user,'api');
Copier après la connexion
Je continuerai à écrire quelques articles sur les petits détails des tests unitaires à l'avenir, veuillez faire attention : )
Recommandations associées : Tutoriel des cinq dernières vidéos Laravel

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal