Testen von Laravel-Paketen: Ausführen von Framework-Migrationen bei Verwendung von RefreshDatabase.
P粉955063662
P粉955063662 2023-07-30 13:20:53
0
1
362
<p>Ich habe ein Laravel-Paket, das mithilfe von Migrationen ein Feld zur Standardbenutzertabelle (die mit Laravel geliefert wird) hinzugefügt hat: </p> <pre class="brush:php;toolbar:false;">public function up() : void { Schema::table('users', function (Blueprint $table) { $table->enum('role', ['super-admin', 'admin', 'tipster', 'user'])->default('user'); }); } </pre> <p>Wenn ich meine Komponententests ausführen möchte, schlägt dies fehl, da in meinem Paket die Standardbenutzertabelle nicht vorhanden ist. </p><p>Gibt es eine Möglichkeit, die vom Framework bereitgestellten Migrationen auszuführen, wenn dieses Merkmal verwendet wird? Ich habe eine Problemumgehung verwendet, um das Problem zu beheben, aber ich möchte den Code wirklich nicht nur für Unit-Tests ändern. </p><p><br /></p> <pre class="brush:php;toolbar:false;">public function up() : void { if (App::runningUnitTests()) { Schema::create('users', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('email')->unique(); $table->enum('role', ['super-admin', 'admin', 'tipster', 'user'])->default('user'); $table->timestamp('email_verified_at')->nullable(); $table->string('password'); $table->rememberToken(); $table->timestamps(); }); } anders { Schema::table('users', function (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> </pre> <p><br /></p>
P粉955063662
P粉955063662

Antworte allen(1)
P粉030479054

事实证明 Orchestra Testbench 的开发者也考虑到了这一点。你可以调用一个方法来包含 Laravel 提供的迁移文件。

/**
 * The migrations to run prior to testing.
 *
 * @return void
 */
protected function defineDatabaseMigrations() : void
{
    $this->loadLaravelMigrations();
} 
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage