Ejemplo n.º 1
0
 /**
  * Creates a new mock class than can be stubbed and verified.
  *
  * @param string                         $mockedClass   - The name of the class to mock
  * @param Phake_ClassGenerator_MockClass $mockGenerator - The generator used to construct mock classes
  * @param Phake_CallRecorder_Recorder    $callRecorder
  * @param Phake_Stubber_IAnswer          $defaultAnswer
  * @param array                          $constructorArgs
  *
  * @throws InvalidArgumentException
  * @return mixed
  */
 public function mock($mockedClass, Phake_ClassGenerator_MockClass $mockGenerator, Phake_CallRecorder_Recorder $callRecorder, Phake_Stubber_IAnswer $defaultAnswer, array $constructorArgs = null)
 {
     if (!class_exists($mockedClass, true) && !interface_exists($mockedClass, true)) {
         throw new InvalidArgumentException("The class / interface [{$mockedClass}] does not exist. Check the spelling and make sure it is loadable.");
     }
     if (!isset($this->cachedClasses[$mockedClass])) {
         $newClassName = $this->generateUniqueClassName($mockedClass);
         $mockGenerator->generate($newClassName, $mockedClass, $this->infoRegistry);
         $this->cachedClasses[$mockedClass] = $newClassName;
     }
     return $mockGenerator->instantiate($this->cachedClasses[$mockedClass], $callRecorder, new Phake_Stubber_StubMapper(), $defaultAnswer, $constructorArgs);
 }
Ejemplo n.º 2
0
 /**
  * Test that the generated mock has the same doc mocked class
  */
 public function testGenerateMaintainsPhpDoc()
 {
     $newClassName = __CLASS__ . '_TestClass25';
     $mockedClass = 'PhakeTest_MockedClass';
     $this->classGen->generate($newClassName, $mockedClass, $this->infoRegistry);
     $rflClass = new ReflectionClass($newClassName);
     $this->assertFalse($rflClass->getMethod("foo")->getDocComment());
     $this->assertEquals("/**\n     * @return void\n     */", $rflClass->getMethod("fooWithComment")->getDocComment());
 }
Ejemplo n.º 3
0
 public function testDestructMocked()
 {
     $newClassName = __CLASS__ . '_TestClass' . uniqid();
     $mockedClass = 'PhakeTest_DestructorClass';
     $this->classGen->generate($newClassName, $mockedClass);
     /** @var $recorder Phake_CallRecorder_Recorder */
     $recorder = $this->getMock('Phake_CallRecorder_Recorder');
     $mapper = new Phake_Stubber_StubMapper();
     $answer = new Phake_Stubber_Answers_ParentDelegate();
     $mock = $this->classGen->instantiate($newClassName, $recorder, $mapper, $answer);
     unset($mock);
 }
Ejemplo n.º 4
0
 /**
  * Sets expectations for how the mock class should be created from the class generator
  *
  * @param Phake_ClassGenerator_MockClass $mockGenerator
  * @param Phake_CallRecorder_Recorder    $recorder
  * @param Phake_Stubber_IAnswer          $answer
  */
 private function setMockInstantiatorExpectations(Phake_ClassGenerator_MockClass $mockGenerator, Phake_CallRecorder_Recorder $recorder, Phake_Stubber_IAnswer $answer)
 {
     $mockGenerator->expects($this->once())->method('instantiate')->with($this->matchesRegularExpression('#^[A-Za-z0-9_]+$#'), $this->equalTo($recorder), $this->isInstanceOf('Phake_Stubber_StubMapper'), $this->equalTo($answer));
 }