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に投稿されています

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

Source: https://habr.com/ru/post/J120661/


All Articles