Ujian pakej Laravel: menjalankan migrasi rangka kerja apabila menggunakan RefreshDatabase.
P粉955063662
2023-07-30 13:20:53
<p>Saya mempunyai pakej Laravel yang menambahkan medan pada jadual pengguna lalai (yang disertakan dengan Laravel) menggunakan migrasi: </p>
<pre class="brush:php;toolbar:false;">public function up() : batal
{
Skema::jadual('pengguna', fungsi (Blueprint $table) {
$table->enum('role', ['super-admin', 'admin', 'tipster', 'user'])->default('user');
});
}
</pra>
<p>Apabila saya ingin menjalankan ujian unit saya, ini menyebabkan ujian saya gagal kerana dalam pakej saya, jadual pengguna lalai tidak wujud. </p><p>Adakah terdapat cara untuk menjalankan migrasi yang disediakan oleh rangka kerja apabila menggunakan sifat ini? Saya telah menggunakan penyelesaian untuk membetulkannya, tetapi saya benar-benar tidak mahu mengubah suai kod hanya untuk ujian unit. </p><p><br /></p>
<pre class="brush:php;toolbar:false;">public function up() : batal
{
jika (App::runningUnitTests())
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('nama');
$table->string('email')->unique();
$table->enum('role', ['super-admin', 'admin', 'tipster', 'user'])->default('user');
$table->timestamp('email_verified_at')->nullable();
$table->string('kata laluan');
$table->ingatToken();
$table->cap masa();
});
}
lain
{
Skema::jadual('pengguna', fungsi (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;"> </pra>
<p><br /></p>
Ternyata pembangun Orchestra Testbench turut mengambil kira perkara ini. Anda boleh memanggil kaedah untuk memasukkan fail migrasi yang disediakan oleh Laravel.
/** * The migrations to run prior to testing. * * @return void */ protected function defineDatabaseMigrations() : void { $this->loadLaravelMigrations(); }