Chris@0: Chris@0: * Chris@0: * For the full copyright and license information, please view the LICENSE Chris@0: * file that was distributed with this source code. Chris@0: */ Chris@0: Chris@0: /** Chris@0: * @since File available since Release 1.0.0 Chris@0: */ Chris@0: class Framework_MockBuilderTest extends PHPUnit_Framework_TestCase Chris@0: { Chris@0: public function testMockBuilderRequiresClassName() Chris@0: { Chris@0: $spec = $this->getMockBuilder('Mockable'); Chris@0: $mock = $spec->getMock(); Chris@0: $this->assertTrue($mock instanceof Mockable); Chris@0: } Chris@0: Chris@0: public function testByDefaultMocksAllMethods() Chris@0: { Chris@0: $spec = $this->getMockBuilder('Mockable'); Chris@0: $mock = $spec->getMock(); Chris@0: $this->assertNull($mock->mockableMethod()); Chris@0: $this->assertNull($mock->anotherMockableMethod()); Chris@0: } Chris@0: Chris@0: public function testMethodsToMockCanBeSpecified() Chris@0: { Chris@0: $spec = $this->getMockBuilder('Mockable'); Chris@0: $spec->setMethods(array('mockableMethod')); Chris@0: $mock = $spec->getMock(); Chris@0: $this->assertNull($mock->mockableMethod()); Chris@0: $this->assertTrue($mock->anotherMockableMethod()); Chris@0: } Chris@0: Chris@0: public function testByDefaultDoesNotPassArgumentsToTheConstructor() Chris@0: { Chris@0: $spec = $this->getMockBuilder('Mockable'); Chris@0: $mock = $spec->getMock(); Chris@0: $this->assertEquals(array(null, null), $mock->constructorArgs); Chris@0: } Chris@0: Chris@0: public function testMockClassNameCanBeSpecified() Chris@0: { Chris@0: $spec = $this->getMockBuilder('Mockable'); Chris@0: $spec->setMockClassName('ACustomClassName'); Chris@0: $mock = $spec->getMock(); Chris@0: $this->assertTrue($mock instanceof ACustomClassName); Chris@0: } Chris@0: Chris@0: public function testConstructorArgumentsCanBeSpecified() Chris@0: { Chris@0: $spec = $this->getMockBuilder('Mockable'); Chris@0: $spec->setConstructorArgs($expected = array(23, 42)); Chris@0: $mock = $spec->getMock(); Chris@0: $this->assertEquals($expected, $mock->constructorArgs); Chris@0: } Chris@0: Chris@0: public function testOriginalConstructorCanBeDisabled() Chris@0: { Chris@0: $spec = $this->getMockBuilder('Mockable'); Chris@0: $spec->disableOriginalConstructor(); Chris@0: $mock = $spec->getMock(); Chris@0: $this->assertNull($mock->constructorArgs); Chris@0: } Chris@0: Chris@0: public function testByDefaultOriginalCloneIsPreserved() Chris@0: { Chris@0: $spec = $this->getMockBuilder('Mockable'); Chris@0: $mock = $spec->getMock(); Chris@0: $cloned = clone $mock; Chris@0: $this->assertTrue($cloned->cloned); Chris@0: } Chris@0: Chris@0: public function testOriginalCloneCanBeDisabled() Chris@0: { Chris@0: $spec = $this->getMockBuilder('Mockable'); Chris@0: $spec->disableOriginalClone(); Chris@0: $mock = $spec->getMock(); Chris@0: $mock->cloned = false; Chris@0: $cloned = clone $mock; Chris@0: $this->assertFalse($cloned->cloned); Chris@0: } Chris@0: Chris@0: public function testCallingAutoloadCanBeDisabled() Chris@0: { Chris@0: // it is not clear to me how to test this nor the difference Chris@0: // between calling it or not Chris@0: $this->markTestIncomplete(); Chris@0: } Chris@0: Chris@0: public function testProvidesAFluentInterface() Chris@0: { Chris@0: $spec = $this->getMockBuilder('Mockable') Chris@0: ->setMethods(array('mockableMethod')) Chris@0: ->setConstructorArgs(array()) Chris@0: ->setMockClassName('DummyClassName') Chris@0: ->disableOriginalConstructor() Chris@0: ->disableOriginalClone() Chris@0: ->disableAutoload(); Chris@0: $this->assertTrue($spec instanceof PHPUnit_Framework_MockObject_MockBuilder); Chris@0: } Chris@0: }