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