public function testCaseFactory_CreatesObjectUsingFactoryMethod()
{
$factory = $this->createFactory();
$c1 = new StdClass();
$c2 = new StdClass();
$factory->bindParam('param1', $c1);
$factory->bindParam('param2', function () use($c2) {
return $c2;
});
$factory->define('Mock', function () use($factory) {
$std = new StdClass();
$std->param1 = $factory->getParam('param1');
$std->param2 = $factory->getParam('param2');
$std->args = func_get_args();
return $std;
});
$std = $factory->create('Mock', $params = [2, null, 'ABC']);
$this->assertInstanceOf(StdClass::class, $std);
$this->assertSame($std->param1, $c1);
$this->assertSame($std->param2, $c2);
$this->assertSame($std->args, $params);
unset($factory);
}