Laravel套件測試:在使用RefreshDatabase時執行框架遷移。
P粉955063662
P粉955063662 2023-07-30 13:20:53
0
1
363
<p>我有一個 Laravel 包,使用遷移向預設的使用者表(隨 Laravel 一起提供的)新增了一個欄位:</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>當我想要執行我的單元測試時,這會導致我的測試失敗,因為在我的套件中,預設的使用者表不存在。 </p><p>在使用這個 trait 時,是否有一種方法可以運行框架提供的遷移?我已經使用了一個解決方法來修復這個問題,但我真的不希望只是為了單元測試而修改程式碼。 </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(); }); } else { 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

全部回覆(1)
P粉030479054

事實證明 Orchestra Testbench 的開發者也考慮到了這一點。你可以呼叫一個方法來包含 Laravel 提供的遷移檔。

/**
 * The migrations to run prior to testing.
 *
 * @return void
 */
protected function defineDatabaseMigrations() : void
{
    $this->loadLaravelMigrations();
} 
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板