2017-12-09 9 views
0

私はテスト時に新しくなったので、私はチュートリアルに従っていました。 Iを設定するデータベースは、次のように設定します。Laravelでテストした後にワイプされたデータベース

'sqlite' => [ 
      'driver' => 'sqlite', 
      'database' => ':memory:', 
      'prefix' => '', 
     ], 

とphpunit.xmlに私はこのような構成をした:

<php> 
     <env name="APP_ENV" value="testing"/> 
     <env name="DATABASE_CONNECTION" value="sqlite"/> 
     <env name="CACHE_DRIVER" value="array"/> 
     <env name="SESSION_DRIVER" value="array"/> 
     <env name="QUEUE_DRIVER" value="sync"/> 
    </php> 

私は何が起こっているのかわからないんだけど、私が作成したデータベースの種ファクトリを使用することは常に欠落しており、データベーステーブルも移行テーブルのみが残っています。

何が起こったのですが、どうすれば修正できますか?

答えて

0

私はコメントとして投稿するつもりでしたが、評判が足りないため、私はそうすることができませんでした。あなたはあなたの現在の問題を解決しようとすることができます

もの: -

  • あなた.envファイルをチェックしてください。接続に参加するには、データベース構成が適切でなければなりません。
  • テスト中に生成されたエラーを表示するには、laravel.logファイルを確認してください。
  • 移行ファイルとシーダーファイルを確認してください。

データがシードされておらず、テーブルも見つからないということは、データベース構成やマイグレーションファイルのエラーに関する明確なヒントです。

これが役に立ちます。

編集:これの回避策を試すことができます。

'mysql_testing' => [ 
     'driver' => 'mysql', 
     'host'  => env('TESTING_DB_HOST', 'localhost'), 
     'database' => env('TESTING_DB_DATABASE', 'forge'), 
     'username' => env('TESTING_DB_USERNAME', 'forge'), 
     'password' => env('TESTING_DB_PASSWORD', ''), 
     'charset' => 'utf8', 
     'collation' => 'utf8_unicode_ci', 
     'prefix' => '', 
     'strict' => false, 
    ], 

そして今、あなたの.envファイルのエントリの詳細をしなければならない: - - :

TESTING_DB_HOST=localhost 
TESTING_DB_DATABASE=homestead_testing 
TESTING_DB_USERNAME=homestead 
TESTING_DB_PASSWORD=secret 

注: - ながら、あなたののconfig/databae.php以下のmysqlアドオンで移行では、次の移行コマンドをテスト目的でのみ使用します。

php artisan migrate --database=mysql_testing

MySQLのテストのデータベースのためのそのしかし、あなたは同様に、また、sqliteのために行うことができます。

+0

どのような設定で接続に参加できますか?とにかく私のdev envはmysqlにあり、私のテストはsqliteを使っています。 – Ying

+0

あなたの開発目的に使用するデータベースは、ダミーデータを作成するためのテスト目的とは異なる必要があります。私は答えを編集します。 –

+0

ああ、私はそれを試してみましょう。だから、あなたはsqlliteとメモリを使っていますか?それは私が手作業を取る必要がないので、私はテストを行うより多くの練習のように見えます。 – Ying

0

私はテストでデータベースマイグレーションを使用しているため、問題が見つかりました。ロールバックする機能がありますので、コメントを外してください:

$this->beforeApplicationDestroyed(function() { 
      //$this->artisan('migrate:rollback'); 

      RefreshDatabaseState::$migrated = false; 
     }); 
関連する問題