2015-08-17 17:00:26 -07:00
< ? php
/*
* This file is part of the PHPUnit_MockObject package .
*
* ( c ) Sebastian Bergmann < sebastian @ phpunit . de >
*
* For the full copyright and license information , please view the LICENSE
* file that was distributed with this source code .
*/
/**
* @ since File available since Release 1.0 . 0
*/
class Framework_MockBuilderTest extends PHPUnit_Framework_TestCase
{
public function testMockBuilderRequiresClassName ()
{
$spec = $this -> getMockBuilder ( 'Mockable' );
$mock = $spec -> getMock ();
$this -> assertTrue ( $mock instanceof Mockable );
}
public function testByDefaultMocksAllMethods ()
{
$spec = $this -> getMockBuilder ( 'Mockable' );
$mock = $spec -> getMock ();
$this -> assertNull ( $mock -> mockableMethod ());
$this -> assertNull ( $mock -> anotherMockableMethod ());
}
public function testMethodsToMockCanBeSpecified ()
{
$spec = $this -> getMockBuilder ( 'Mockable' );
$spec -> setMethods ( array ( 'mockableMethod' ));
$mock = $spec -> getMock ();
$this -> assertNull ( $mock -> mockableMethod ());
$this -> assertTrue ( $mock -> anotherMockableMethod ());
}
public function testByDefaultDoesNotPassArgumentsToTheConstructor ()
{
$spec = $this -> getMockBuilder ( 'Mockable' );
$mock = $spec -> getMock ();
2015-10-08 11:40:12 -07:00
$this -> assertEquals ( array ( null , null ), $mock -> constructorArgs );
2015-08-17 17:00:26 -07:00
}
public function testMockClassNameCanBeSpecified ()
{
$spec = $this -> getMockBuilder ( 'Mockable' );
$spec -> setMockClassName ( 'ACustomClassName' );
$mock = $spec -> getMock ();
$this -> assertTrue ( $mock instanceof ACustomClassName );
}
public function testConstructorArgumentsCanBeSpecified ()
{
$spec = $this -> getMockBuilder ( 'Mockable' );
$spec -> setConstructorArgs ( $expected = array ( 23 , 42 ));
$mock = $spec -> getMock ();
$this -> assertEquals ( $expected , $mock -> constructorArgs );
}
public function testOriginalConstructorCanBeDisabled ()
{
$spec = $this -> getMockBuilder ( 'Mockable' );
$spec -> disableOriginalConstructor ();
$mock = $spec -> getMock ();
$this -> assertNull ( $mock -> constructorArgs );
}
public function testByDefaultOriginalCloneIsPreserved ()
{
$spec = $this -> getMockBuilder ( 'Mockable' );
$mock = $spec -> getMock ();
$cloned = clone $mock ;
$this -> assertTrue ( $cloned -> cloned );
}
public function testOriginalCloneCanBeDisabled ()
{
$spec = $this -> getMockBuilder ( 'Mockable' );
$spec -> disableOriginalClone ();
$mock = $spec -> getMock ();
2015-10-08 11:40:12 -07:00
$mock -> cloned = false ;
2015-08-17 17:00:26 -07:00
$cloned = clone $mock ;
$this -> assertFalse ( $cloned -> cloned );
}
public function testCallingAutoloadCanBeDisabled ()
{
// it is not clear to me how to test this nor the difference
// between calling it or not
$this -> markTestIncomplete ();
}
public function testProvidesAFluentInterface ()
{
$spec = $this -> getMockBuilder ( 'Mockable' )
-> setMethods ( array ( 'mockableMethod' ))
-> setConstructorArgs ( array ())
-> setMockClassName ( 'DummyClassName' )
-> disableOriginalConstructor ()
-> disableOriginalClone ()
-> disableAutoload ();
$this -> assertTrue ( $spec instanceof PHPUnit_Framework_MockObject_MockBuilder );
}
}