2

テスト用に sqlite db が構成された Laravel 4 アプリケーションがあります。

ワークベンチパッケージで作業しています

モデルにいくつかの固有のプロパティを定義したため、PHPUnit テストでモデルをテストする際に問題が発生しました。Artisan::call('migrate', array('--bench' => 'vendor/webshop'));他のテストを拡張する基本テスト クラスから実行します。

これによりデータベースの移行が実行されると思いますが、私の意見では、データベース内のモデルは削除されません。

もし私がするなら

public function setUp() {

    parent::setUp();

    $this->order = Order::create(array(
        "uniquekey" = "123"
    ));
}

一意のキー規則に違反しているため、モデルを挿入できないというエラーが表示されます。

すべてのテストの前にデータベースをどのようにクリーンアップすればよいですか?

4

1 に答える 1

3

テスト目的で環境を定義する必要があります。

実際、Laravel には 1 つ用意されていtestingますapp/config

これを作成app/config/testing/database.php(または存在する場合は変更) して配置します。

return array(

    'default' => 'sqlite',

    'connections' => array(

        'sqlite' => array(
            'driver'   => 'sqlite',
            'database' => ':memory:', // this will do the trick ;)
            'prefix'   => '',
        ),
    ),
);

テストを実行すると、Laravel はその環境を自動的に 'testing' に設定します - これで遊ぶ必要はありません。SQLite インメモリ DB は RAM 内に格納されたメモリであるため、高速です。もちろん、テストも空のデータベースから開始されます。

于 2013-07-24T10:19:22.017 に答える