11

私はまだ、symfony2 コントローラーをテストするための PHP 単体テストに取り組んでいます。私のテスト クラスは WebTestCase の派生物であり、テストは GET または POST リクエストを実行して、すべてが正常に機能するかどうかを確認します。基礎となるすべてのレイヤーをテストしたいのですが、テストでデータベースを台無しにしたくありません。私はモックアップを使用したくありませんが、すべての変更をチェックするテスト シナリオをセットアップできるインメモリ SQLite db を使用します。doctrine 1.x でこれを行う方法に関する多くのヒントを見つけましたが、それらはもはや機能しません。だから私はこのようなものが欲しい:

class BlahblahTest extends WebTestCase {
    public function testXXXYYY() {
        // 1. Setup a new database with SQLite:memory:
        // 2. create the database and all tables according the entities in my project
        $this->createTestScenario(); // 3.
        $crawler = $this->client->request('GET', '/testpage');  // 4.
        // 5. Lots of checks against the database and / or the $crawler data
    }
}

この作品を手に入れるチャンスはありますか?

事前にありがとうヘネス

4

3 に答える 3

15

私はメモリ内のsqliteデータベースを使用したことはありませんが、テストのために保存されているsqliteデータベースを使用しています。

そのためには、追加する必要があります

# app/config/config_test.yml
doctrine:
    dbal:
        default_connection: default
        connections:
            default:
                driver:   pdo_sqlite
                path:     %kernel.cache_dir%/test.db

あなたのテスト構成に(私にとっては config_test.yml )

ドキュメントに従って、これをメモリ内に変更できるはずです

http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#pdo-sqlite

memory (boolean): SQLite データベースがメモリ内 (非永続的) である必要がある場合は true。パスと相互に排他的です。パスが優先されます。

したがって、構成は次のようになります

# app/config/config_test.yml
doctrine:
    dbal:
        default_connection: default
        connections:
            default:
                driver:   pdo_sqlite
                memory:   true
于 2014-05-08T10:57:59.583 に答える