recherche

Maison  >  Questions et réponses  >  le corps du texte

Test du package Laravel : exécution de migrations de framework lors de l'utilisation de RefreshDatabase.

<p>J'ai un package Laravel qui a ajouté un champ à la table des utilisateurs par défaut (fournie avec Laravel) à l'aide de migrations : </p> <pre class="brush:php;toolbar:false;">fonction publique up() : void { Schema::table('utilisateurs', fonction (Blueprint $table) { $table->enum('role', ['super-admin', 'admin', 'tipster', 'user'])->default('user'); }); } ≪/pré> <p>Lorsque je souhaite exécuter mes tests unitaires, cela entraîne l'échec de mes tests car dans mon package, la table des utilisateurs par défaut n'existe pas. </p><p>Existe-t-il un moyen d'exécuter les migrations fournies par le framework lors de l'utilisation de cette fonctionnalité ? J'ai utilisé une solution de contournement pour résoudre ce problème, mais je ne veux vraiment pas modifier le code uniquement pour les tests unitaires. </p><p><br /></p> <pre class="brush:php;toolbar:false;">fonction publique up() : void { si (App::runningUnitTests()) { Schema::create('utilisateurs', fonction (Blueprint $table) { $table->id(); $table->string('nom'); $table->string('email')->unique(); $table->enum('role', ['super-admin', 'admin', 'tipster', 'user'])->default('user'); $table->timestamp('email_verified_at')->nullable(); $table->string('mot de passe'); $table->rememberToken(); $table->horodatages(); }); } autre { Schema::table('utilisateurs', fonction (Blueprint $table) { $table->enum('role', ['super-admin', 'admin', 'tipster', 'user'])->default('user'); }); } }<span style="font-family:'sans serif, tahoma, verdana, helvetica';"><span style="white-space:nowrap;"> </span></span> ≪/pré> <p><br /></p>
P粉955063662P粉955063662485 Il y a quelques jours368

répondre à tous(1)je répondrai

  • P粉030479054

    P粉0304790542023-07-31 10:22:25

    Il s'avère que les développeurs d'Orchestra Testbench ont également pris cela en considération. Vous pouvez appeler une méthode pour inclure les fichiers de migration fournis par Laravel.

    /**
     * The migrations to run prior to testing.
     *
     * @return void
     */
    protected function defineDatabaseMigrations() : void
    {
        $this->loadLaravelMigrations();
    } 

    répondre
    0
  • Annulerrépondre