依存性注入コンテナーの単体テストを行っています。
最も基本的なレベルでは、オブジェクト グラフの作成が正しく行われていることをテストしています。これは、DIC にロードされたリフレクションとルールを組み合わせて使用します。
DIC はクラス定義を使用して動作しますが、モックの依存関係のない性質のために、モックがこのタスクには適していないと考えるのは正しいですか?
モックを使用しない場合、私のテストの 1 つが次のようになります。
public function testObjectGraphCreation() {
$a = $this->dic->create('A');
$this->assertInstanceOf('B', $a->b);
$this->assertInstanceOf('C', $a->b->c);
$this->assertInstanceOf('D', $a->b->c->d);
$this->assertInstanceOf('E', $a->b->c->e);
$this->assertInstanceOf('F', $a->b->c->e->f);
}
(明らかに、この連鎖と公開依存関係はテストのためだけにあります)
そして、これを機能させるためにいくつかのクラスを定義しました:
class A {
public $b;
public function __construct(B $b) {
$this->b = $b;
}
}
class B {
public $c;
public function __construct(C $c) {
$this->c = $c;
}
}
class C {
public $d;
public $e;
public function __construct(D $d, E $e) {
$this->d = $d;
$this->e = $e;
}
}
class D {
}
class E {
public $f;
public function __construct(F $f) {
$this->f = $f;
}
}
class F {}
このテストの性質上、生成されたモックをこれに使用できないと考えるのは正しいですか?