| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 | <?phpclass Framework_MockObject_GeneratorTest extends PHPUnit_Framework_TestCase{    /**     * @var PHPUnit_Framework_MockObject_Generator     */    protected $generator;    protected function setUp()    {        $this->generator = new PHPUnit_Framework_MockObject_Generator;    }    /**     * @covers PHPUnit_Framework_MockObject_Generator::getMock     * @expectedException PHPUnit_Framework_Exception     */    public function testGetMockFailsWhenInvalidFunctionNameIsPassedInAsAFunctionToMock()    {        $this->generator->getMock('StdClass', array(0));    }    /**     * @covers PHPUnit_Framework_MockObject_Generator::getMock     */    public function testGetMockCanCreateNonExistingFunctions()    {        $mock = $this->generator->getMock('StdClass', array('testFunction'));        $this->assertTrue(method_exists($mock, 'testFunction'));    }    /**     * @covers PHPUnit_Framework_MockObject_Generator::getMock     * @expectedException PHPUnit_Framework_MockObject_RuntimeException     * @expectedExceptionMessage duplicates: "foo, foo"     */    public function testGetMockGeneratorFails()    {        $mock = $this->generator->getMock('StdClass', array('foo', 'foo'));    }    /**     * @covers PHPUnit_Framework_MockObject_Generator::getMockForAbstractClass     */    public function testGetMockForAbstractClassDoesNotFailWhenFakingInterfaces()    {        $mock = $this->generator->getMockForAbstractClass('Countable');        $this->assertTrue(method_exists($mock, 'count'));    }    /**     * @covers PHPUnit_Framework_MockObject_Generator::getMockForAbstractClass     */    public function testGetMockForAbstractClassStubbingAbstractClass()    {        $mock = $this->generator->getMockForAbstractClass('AbstractMockTestClass');        $this->assertTrue(method_exists($mock, 'doSomething'));    }    /**     * @covers PHPUnit_Framework_MockObject_Generator::getMockForAbstractClass     */    public function testGetMockForAbstractClassWithNonExistentMethods()    {        $mock = $this->generator->getMockForAbstractClass(            'AbstractMockTestClass',            array(),            '',            true,            true,            true,            array('nonexistentMethod')        );        $this->assertTrue(method_exists($mock, 'nonexistentMethod'));        $this->assertTrue(method_exists($mock, 'doSomething'));    }    /**     * @covers PHPUnit_Framework_MockObject_Generator::getMockForAbstractClass     */    public function testGetMockForAbstractClassShouldCreateStubsOnlyForAbstractMethodWhenNoMethodsWereInformed()    {        $mock = $this->generator->getMockForAbstractClass('AbstractMockTestClass');        $mock->expects($this->any())             ->method('doSomething')             ->willReturn('testing');        $this->assertEquals('testing', $mock->doSomething());        $this->assertEquals(1, $mock->returnAnything());    }    /**     * @dataProvider getMockForAbstractClassExpectsInvalidArgumentExceptionDataprovider     * @covers PHPUnit_Framework_MockObject_Generator::getMockForAbstractClass     * @expectedException PHPUnit_Framework_Exception     */    public function testGetMockForAbstractClassExpectingInvalidArgumentException($className, $mockClassName)    {        $mock = $this->generator->getMockForAbstractClass($className, array(), $mockClassName);    }    /**     * @covers PHPUnit_Framework_MockObject_Generator::getMockForAbstractClass     * @expectedException PHPUnit_Framework_MockObject_RuntimeException     */    public function testGetMockForAbstractClassAbstractClassDoesNotExist()    {        $mock = $this->generator->getMockForAbstractClass('Tux');    }    /**     * Dataprovider for test "testGetMockForAbstractClassExpectingInvalidArgumentException"     */    public static function getMockForAbstractClassExpectsInvalidArgumentExceptionDataprovider()    {        return array(            'className not a string' => array(array(), ''),            'mockClassName not a string' => array('Countable', new StdClass),        );    }    /**     * @covers PHPUnit_Framework_MockObject_Generator::getMockForTrait     * @requires PHP 5.4.0     */    public function testGetMockForTraitWithNonExistentMethodsAndNonAbstractMethods()    {        $mock = $this->generator->getMockForTrait(            'AbstractTrait',            array(),            '',            true,            true,            true,            array('nonexistentMethod')        );        $this->assertTrue(method_exists($mock, 'nonexistentMethod'));        $this->assertTrue(method_exists($mock, 'doSomething'));        $this->assertTrue($mock->mockableMethod());        $this->assertTrue($mock->anotherMockableMethod());    }    /**     * @covers   PHPUnit_Framework_MockObject_Generator::getMockForTrait     * @requires PHP 5.4.0     */    public function testGetMockForTraitStubbingAbstractMethod()    {        $mock = $this->generator->getMockForTrait('AbstractTrait');        $this->assertTrue(method_exists($mock, 'doSomething'));    }    /**     * @requires PHP 5.4.0     */    public function testGetMockForSingletonWithReflectionSuccess()    {        // Probably, this should be moved to tests/autoload.php        require_once __DIR__ . '/_fixture/SingletonClass.php';        $mock = $this->generator->getMock('SingletonClass', array('doSomething'), array(), '', false);        $this->assertInstanceOf('SingletonClass', $mock);    }    /**     * Same as "testGetMockForSingletonWithReflectionSuccess", but we expect     * warning for PHP < 5.4.0 since PHPUnit will try to execute private __wakeup     * on unserialize     */    public function testGetMockForSingletonWithUnserializeFail()    {        if (version_compare(PHP_VERSION, '5.4.0', '>=')) {            $this->markTestSkipped('Only for PHP < 5.4.0');        }        $this->setExpectedException('PHPUnit_Framework_MockObject_RuntimeException');        // Probably, this should be moved to tests/autoload.php        require_once __DIR__ . '/_fixture/SingletonClass.php';        $mock = $this->generator->getMock('SingletonClass', array('doSomething'), array(), '', false);    }    /**     * ReflectionClass::getMethods for SoapClient on PHP 5.3 produces PHP Fatal Error     * @runInSeparateProcess     */    public function testGetMockForSoapClientReflectionMethodsDuplication()    {        if (version_compare(PHP_VERSION, '5.4.0', '>=')) {            $this->markTestSkipped('Only for PHP < 5.4.0');        }        $mock = $this->generator->getMock('SoapClient', array(), array(), '', false);        $this->assertInstanceOf('SoapClient', $mock);    }}
 |