Test du package Laravel : exécution de migrations de framework lors de l'utilisation de RefreshDatabase.
P粉955063662
P粉955063662 2023-07-30 13:20:53
0
1
393
<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粉955063662
P粉955063662

répondre à tous(1)
P粉030479054

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();
} 
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal