PHPから、データベースを再作成したり、デフォルトデータを挿入したりするにはどうしたらいいですか?現在、私は単体テストの振る舞いを使用しようとしています。PHPでどのようにしてデータベースを再作成することができますか(ユニットテストなど)
私はユニットテスト
私はCLIdoctrine orm:schema-tool:update --force
それとも
doctrine orm:schema-tool:drop --force
doctrine orm:schema-tool:create
私はPHPの交換を探していますを使用することができます
ためドクトリン2、Zend Frameworkの1.11、Zend_Test
を使用しています、今までに見つかったthis
$tool = new \Doctrine\ORM\Tools\SchemaTool($em);
$classes = array(
$em->getClassMetadata('Entities\User'),
$em->getClassMetadata('Entities\Profile')
);
$tool->dropSchema($classes, \Doctrine\ORM\Tools\SchemaTool::DROP_DATABASE);
$tool->createSchema($classes);
モデルクラスを指定する必要はありません。変更が必要な場合は開発中です。下の...で指定されたすべてのクラスから読み込むだけです... CLIのように、クラスを指定する必要はありませんか?
$driverImpl = $config->newDefaultAnnotationDriver(array(realpath('../models')));
$config->setMetadataDriverImpl($driverImpl);
:ここ
は、私は私がどこからのEntityManagerへの参照を取得することができます静的ブートストラップクラスを持っていると私はユニットテストでセットアップ()の呼び出しでスキーマを再作成例です。 (参考)* [PHPUnitのデータベーステストに関する章](http://www.phpunit.de/manual/3.4/en/database.html) – Gordon
@Gordon、ありがとう、私はそれが正しい方法だと思う私のモデルをテストしてください.PDO接続ではなく、Doctrineの接続をどうすれば使用できますか?私は[Doctrine 2](http://www.doctrine-project。org /) –
私は本質的にあなたと同じ設定を使用していますが、私は設定からクラス名のリストを引き出すことを除いて、これは維持しやすいものです。しかし、すべてのテストで 'dropSchema()'と 'createSchema()を呼び出すのは本当にコストがかかり、大きなテストスイートが永遠に実行されることを発見しました。 PHPUnitのフィクスチャを使用する方がはるかに高速です。ベンジャミンのエクステンションもチェックする必要があります。 –