/** * Generate class initialization code * @param Cogen\Code $code * @param string $instanceVariable * @return string */ public function getClassInitialization(Code $code, $instanceVariable, $isMock = false) { if ($isMock) { $lines = array(); foreach ($this->class->getGetters() as $method) { /* @var $method ReflectionMethod */ $lines[] = "{$instanceVariable}->expects(\$this->once())->method('{$method->getName()}')"; $lines[] = "\t->will(\$this->returnCallback(function() {"; $lines[] = "\t\treturn null;"; $lines[] = "\t}));"; } $code->after($lines); return "{$instanceVariable} = \$this->getMock('{$this->class->getName()}');"; } $lines = array(); $arguments = ''; $lines = array(); foreach ($this->class->getSetters() as $method) { /* @var $method ReflectionMethod */ $lines[] = $this->generateTestMethodCall($method, $instanceVariable, $code, true); } $code->after($lines); return "{$instanceVariable} = new {$this->class->getName()}({$arguments});"; }
/** * Process getter methods * @param string $instanceVariable * @param Cogen\Reflection\ReflectionClass $class * @param Cogen\Code $code */ public function generateGetters($instanceVariable, ReflectionClass $class, Code $code) { foreach ($class->getGetters() as $getter) { /* @var $getter ReflectionMethod */ $invokation = $this->generateTestMethodCall($getter, $instanceVariable, $code); if ($getter->isScalarReturn()) { $actualName = $invokation->getResultVariable(); $expectedName = $getter->getNameWrapped('expected', 'Result', true); $code->expect("{$expectedName} = null;"); $code->assert("\$this->assertEquals({$expectedName}, {$actualName});"); } } }