我正在进行一个依赖注入容器的单元测试。
在最基本的层面上,我正在测试对象图的创建是否正确。这需要使用反射和加载到DIC中的规则的混合。
DIC使用类定义工作,由于mock的无依赖性质,我认为它们不适合这个任务,我的想法正确吗?
以下是一个没有使用mock的测试样例:
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 {}
由于这个测试的性质,我是否正确地认为我不能使用生成的模拟数据?