この記事では主に、Laravel データベース テスト (SQLite) を行うための別の方法を紹介しますが、これには一定の参考値がありますので、共有します。必要な友人は参考にしてください。
テストに関しては、Laravel
組み込み使用PHPUnit
が非常に便利なソリューションを提供します。データベースの追加、削除、変更、クエリのテストでは、テスト終了後にデータベースをどのように元の状態に戻すかが非常に重要な問題となります。たとえば、ユーザー登録方法をテストするには、ユーザー レコードが必要です。はデータベースに挿入されますが、テストが完了した後は、このテスト ケースをデータベースに保存したくないのです。この問題を解決するために、Laravel
は非常に便利なソリューションを提供します:
移行を使用します: DatabaseMigrations
DatabaseTransactions
:memory:
Laravel のメモリ内データベースを使用します。提供されている 2 つのソリューションでも、データベースに対して読み取りおよび書き込み操作が実行されます。場合によっては、これを実行したくない場合もあります (たとえば、複数の人がオンライン開発データベースを共有している場合)。この場合、より洗練された方法を使用することもできます:
SQLlite のロジックは実際には非常に単純です。テスト ケースを実行するときに、データベース接続を
SQLite に置き換えます。
SQLite## であると想定されています) # はこのマシンにインストールされています): <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">class HomePageTest extends TestCase {
public function testHomePage()
{
// 创建一个测试用户,并保存
$user = factory(App\User::class)->create();
$this->actingAs($user)->visit('/home')->see('Dashboard');
}
}</pre><div class="contentsignin">ログイン後にコピー</div></div>
データベース構成ファイル、つまり connections
配列に追加します。 config/database.php
の新しいデータベース接続
'sqlite' => [ 'driver' => 'sqlite', 'database' => ':memory:', 'prefix' => '', ],
:memory:データベースは
SQLite に組み込まれたインメモリ データベースです。テスト ケースが実行されるたびに、新しいデータベースがメモリ内に作成され、テストが完了し、データベース接続が閉じられると自動的にクリアされます。パフォーマンスが優れています。分離され、メモリ内にあるため、非常に高速です。これらの機能はテストに非常に便利です。これも非常に重要な理由です。テスト ライブラリとして
SQLite データベースを選択します。詳しい説明については、ここをクリックしてください。
phpunit.xml で、データベース接続を
SQLite に変更します。ちょうど定義された Connection
<php> <env name="APP_ENV" value="testing"/> <env name="CACHE_DRIVER" value="array"/> <env name="SESSION_DRIVER" value="array"/> <env name="QUEUE_DRIVER" value="sync"/> <!-- 将数据库连接改为刚刚定义的SQLite连接 --> <env name="DB_CONNECTION" value="sqlite" /> </php>
DB_CONNECTION=mysql をオーバーライドし、フレームワークにtest 場合によっては、
mysql 接続の代わりに
sqlite 接続を使用します。
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">public function setUp()
{
parent::setUp();
// 执行数据库迁移
$this->artisan('migrate');
}</pre><div class="contentsignin">ログイン後にコピー</div></div>
このようにして、各テスト ケースが実行される前に、すべての移行が # の
ソリューションの長所と短所
もちろん、このソリューションには欠点もあります。プロジェクト データベースが巨大で、多数のデータ テーブルや移行ファイルがある場合、大量のメモリを消費します。テスト中にメモリが不足し、テストが中断される可能性があります。このとき、PHP に適切なメモリを割り当て、
php.ini
の設定を変更する必要があります。上記は次のとおりです。この記事の内容全体が皆さんの学習に役立つことを願っています。関連コンテンツの詳細については、PHP 中国語 Web サイトに注目してください。
<a title="如何解决Laravel.log 文件写入的问题" href="//m.sbmmt.com/php-weizijiaocheng-406465.html" target="_blank">Laravel 開発環境展開 Homestead のインストールと構成プロセス (Windows システム)</a>
Laravel ルーティング (ルーター) のグラフィックとテキストの説明
以上がLaravelデータベーステストを行う別の方法(SQLite)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。