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