:ルーメンでのユニットテスト中にデータベースの移行とトランザクションの違いは何ですか?ルーメン5.3ドキュメント毎の
移行に
一つのオプションを使用するには、各テストの後にデータベースをロールバックし、次のテストの前にそれ を移行することです。 Lumenは簡単にDatabaseMigrationsの特性 を提供し、自動的にこれを処理します。単に テストクラス上の形質を使用します。
<?php use Laravel\Lumen\Testing\DatabaseMigrations; use Laravel\Lumen\Testing\DatabaseTransactions; class ExampleTest extends TestCase { use DatabaseMigrations; /** * A basic functional test example. * * @return void */ public function testBasicExample() { $this->get('/foo'); } }
取引
別のオプションは、データベーストランザクション内のすべてのテストケースをラップすることですを使用しました。あなたは説明テキストがほぼ同じである見ることができるとのコード例では、特性の利用を除き、まったく同じであるので
<?php use Laravel\Lumen\Testing\DatabaseMigrations; use Laravel\Lumen\Testing\DatabaseTransactions; class ExampleTest extends TestCase { use DatabaseTransactions; /** * A basic functional test example. * * @return void */ public function testBasicExample() { $this->get('/foo'); } }
: は再び、ルーメンは便利DatabaseTransactionsが はこれを自動的に処理する、という形質を提供します。したがって、この違いは、フレームワークがテストを処理する方法に完全に含まれていることは明らかです。
これらの機能はどのように異なるのですか。
1つの違いがデータベースドライバと関係する場合は、私はMYSQLを使用しています。
したがって、移行の安全性は向上しますが、移行はより安全ですが遅くなり、トランザクションは高速ですが、実際には実データで作業し、最後にトランザクションをロールバックできることを信頼することになります。 –