PDO:シリアル化、後期初期化、PHPUnit

こんにちは。 ご存知のように、 PDOはシリアル化をサポートしていません 。 いくつかの興味深いことがこれに関連しています。特に、 トレースPHPUnitのPDOからモックを作成できないことに驚くことです。



私はPHPUnitを積極的に使用し、もう一度Dependency Injectionパターンを実装して、PDOからMockオブジェクトを作成する際に説明した困難に遭遇しました。







私が達成したかったものは次のとおりです。

class MyTest

extends \PHPUnit_Framework_TestCase

{

...

protected function setUp()

{

$ this ->pdo = $ this ->getMock( 'PDO' );

$ this ->myObject = new MyClass($ this ->pdo);

}

}




* This source code was highlighted with Source Code Highlighter .








解決策として、 LazyPDOクラス、PDOの子孫が作成されました。PDOの子孫は痛みを伴わずに(デ)シリアル化でき、コンストラクターに渡されたかsetAttribute()に渡されたかに関係なく、接続属性のセットを保存します。 コードはGitHubに投稿されています



私は批判することをうれしく思います。



All Articles