私は数時間掘り下げてきましたが、複数の単体テストで単一の PDO 接続 (MySQL) をリサイクルする方法が見つかりません。そんな動物いる?
ブートストラップで何らかの形で宣言する必要があるようですが、PDO 接続をシリアル化できないため、テストが中断されます。
多くのテーブルでスキーマに対してデータセットをテストしたいので、毎回新しい接続のためにデータベースにアクセスしたくありません。
私は数時間掘り下げてきましたが、複数の単体テストで単一の PDO 接続 (MySQL) をリサイクルする方法が見つかりません。そんな動物いる?
ブートストラップで何らかの形で宣言する必要があるようですが、PDO 接続をシリアル化できないため、テストが中断されます。
多くのテーブルでスキーマに対してデータセットをテストしたいので、毎回新しい接続のためにデータベースにアクセスしたくありません。
私の短い答えは次のとおりです。DB 関連のコードをテストするクラスで接続を作成するだけです。
もう 1 つのオプションはsetUpBeforeClass
、接続をさらに別の静的プロパティに割り当てる静的を作成することです。
public static function setUpBeforeClass()
{
self::$connection = new \PDO($dsn, $usr, $pwd, array());
}
これは、ドキュメントを掘り下げているときに遭遇するはずの、これを行う有効な方法です。もちろん、接続は静的であるため、グローバル スコープからアクセスでき、手動で閉じるのが最適です。これは、tearDownAfterClass
メソッドを使用して行われます (これpublic static
も必須です)。
public static function tearDownAfterClass()
{
self::$connection->rollBack();//? if required
self::$connection = null;
}
これらのメソッドは、コンストラクターおよびデストラクターであると考えてください。リフレクションを通じて呼び出されるため、署名は でなければなりません。public static