annotate vendor/phpunit/phpunit-mock-objects/tests/GeneratorTest.php @ 0:4c8ae668cc8c

Initial import (non-working)
author Chris Cannam
date Wed, 29 Nov 2017 16:09:58 +0000
parents
children 1fec387a4317
rev   line source
Chris@0 1 <?php
Chris@0 2 class Framework_MockObject_GeneratorTest extends PHPUnit_Framework_TestCase
Chris@0 3 {
Chris@0 4 /**
Chris@0 5 * @var PHPUnit_Framework_MockObject_Generator
Chris@0 6 */
Chris@0 7 protected $generator;
Chris@0 8
Chris@0 9 protected function setUp()
Chris@0 10 {
Chris@0 11 $this->generator = new PHPUnit_Framework_MockObject_Generator;
Chris@0 12 }
Chris@0 13
Chris@0 14 /**
Chris@0 15 * @covers PHPUnit_Framework_MockObject_Generator::getMock
Chris@0 16 * @expectedException PHPUnit_Framework_Exception
Chris@0 17 */
Chris@0 18 public function testGetMockFailsWhenInvalidFunctionNameIsPassedInAsAFunctionToMock()
Chris@0 19 {
Chris@0 20 $this->generator->getMock('StdClass', array(0));
Chris@0 21 }
Chris@0 22
Chris@0 23 /**
Chris@0 24 * @covers PHPUnit_Framework_MockObject_Generator::getMock
Chris@0 25 */
Chris@0 26 public function testGetMockCanCreateNonExistingFunctions()
Chris@0 27 {
Chris@0 28 $mock = $this->generator->getMock('StdClass', array('testFunction'));
Chris@0 29 $this->assertTrue(method_exists($mock, 'testFunction'));
Chris@0 30 }
Chris@0 31
Chris@0 32 /**
Chris@0 33 * @covers PHPUnit_Framework_MockObject_Generator::getMock
Chris@0 34 * @expectedException PHPUnit_Framework_MockObject_RuntimeException
Chris@0 35 * @expectedExceptionMessage duplicates: "foo, foo"
Chris@0 36 */
Chris@0 37 public function testGetMockGeneratorFails()
Chris@0 38 {
Chris@0 39 $mock = $this->generator->getMock('StdClass', array('foo', 'foo'));
Chris@0 40 }
Chris@0 41
Chris@0 42 /**
Chris@0 43 * @covers PHPUnit_Framework_MockObject_Generator::getMockForAbstractClass
Chris@0 44 */
Chris@0 45 public function testGetMockForAbstractClassDoesNotFailWhenFakingInterfaces()
Chris@0 46 {
Chris@0 47 $mock = $this->generator->getMockForAbstractClass('Countable');
Chris@0 48 $this->assertTrue(method_exists($mock, 'count'));
Chris@0 49 }
Chris@0 50
Chris@0 51 /**
Chris@0 52 * @covers PHPUnit_Framework_MockObject_Generator::getMockForAbstractClass
Chris@0 53 */
Chris@0 54 public function testGetMockForAbstractClassStubbingAbstractClass()
Chris@0 55 {
Chris@0 56 $mock = $this->generator->getMockForAbstractClass('AbstractMockTestClass');
Chris@0 57 $this->assertTrue(method_exists($mock, 'doSomething'));
Chris@0 58 }
Chris@0 59
Chris@0 60 /**
Chris@0 61 * @covers PHPUnit_Framework_MockObject_Generator::getMockForAbstractClass
Chris@0 62 */
Chris@0 63 public function testGetMockForAbstractClassWithNonExistentMethods()
Chris@0 64 {
Chris@0 65 $mock = $this->generator->getMockForAbstractClass(
Chris@0 66 'AbstractMockTestClass',
Chris@0 67 array(),
Chris@0 68 '',
Chris@0 69 true,
Chris@0 70 true,
Chris@0 71 true,
Chris@0 72 array('nonexistentMethod')
Chris@0 73 );
Chris@0 74
Chris@0 75 $this->assertTrue(method_exists($mock, 'nonexistentMethod'));
Chris@0 76 $this->assertTrue(method_exists($mock, 'doSomething'));
Chris@0 77 }
Chris@0 78
Chris@0 79 /**
Chris@0 80 * @covers PHPUnit_Framework_MockObject_Generator::getMockForAbstractClass
Chris@0 81 */
Chris@0 82 public function testGetMockForAbstractClassShouldCreateStubsOnlyForAbstractMethodWhenNoMethodsWereInformed()
Chris@0 83 {
Chris@0 84 $mock = $this->generator->getMockForAbstractClass('AbstractMockTestClass');
Chris@0 85
Chris@0 86 $mock->expects($this->any())
Chris@0 87 ->method('doSomething')
Chris@0 88 ->willReturn('testing');
Chris@0 89
Chris@0 90 $this->assertEquals('testing', $mock->doSomething());
Chris@0 91 $this->assertEquals(1, $mock->returnAnything());
Chris@0 92 }
Chris@0 93
Chris@0 94 /**
Chris@0 95 * @dataProvider getMockForAbstractClassExpectsInvalidArgumentExceptionDataprovider
Chris@0 96 * @covers PHPUnit_Framework_MockObject_Generator::getMockForAbstractClass
Chris@0 97 * @expectedException PHPUnit_Framework_Exception
Chris@0 98 */
Chris@0 99 public function testGetMockForAbstractClassExpectingInvalidArgumentException($className, $mockClassName)
Chris@0 100 {
Chris@0 101 $mock = $this->generator->getMockForAbstractClass($className, array(), $mockClassName);
Chris@0 102 }
Chris@0 103
Chris@0 104 /**
Chris@0 105 * @covers PHPUnit_Framework_MockObject_Generator::getMockForAbstractClass
Chris@0 106 * @expectedException PHPUnit_Framework_MockObject_RuntimeException
Chris@0 107 */
Chris@0 108 public function testGetMockForAbstractClassAbstractClassDoesNotExist()
Chris@0 109 {
Chris@0 110 $mock = $this->generator->getMockForAbstractClass('Tux');
Chris@0 111 }
Chris@0 112
Chris@0 113 /**
Chris@0 114 * Dataprovider for test "testGetMockForAbstractClassExpectingInvalidArgumentException"
Chris@0 115 */
Chris@0 116 public static function getMockForAbstractClassExpectsInvalidArgumentExceptionDataprovider()
Chris@0 117 {
Chris@0 118 return array(
Chris@0 119 'className not a string' => array(array(), ''),
Chris@0 120 'mockClassName not a string' => array('Countable', new StdClass),
Chris@0 121 );
Chris@0 122 }
Chris@0 123
Chris@0 124 /**
Chris@0 125 * @covers PHPUnit_Framework_MockObject_Generator::getMockForTrait
Chris@0 126 * @requires PHP 5.4.0
Chris@0 127 */
Chris@0 128 public function testGetMockForTraitWithNonExistentMethodsAndNonAbstractMethods()
Chris@0 129 {
Chris@0 130 $mock = $this->generator->getMockForTrait(
Chris@0 131 'AbstractTrait',
Chris@0 132 array(),
Chris@0 133 '',
Chris@0 134 true,
Chris@0 135 true,
Chris@0 136 true,
Chris@0 137 array('nonexistentMethod')
Chris@0 138 );
Chris@0 139
Chris@0 140 $this->assertTrue(method_exists($mock, 'nonexistentMethod'));
Chris@0 141 $this->assertTrue(method_exists($mock, 'doSomething'));
Chris@0 142 $this->assertTrue($mock->mockableMethod());
Chris@0 143 $this->assertTrue($mock->anotherMockableMethod());
Chris@0 144 }
Chris@0 145
Chris@0 146 /**
Chris@0 147 * @covers PHPUnit_Framework_MockObject_Generator::getMockForTrait
Chris@0 148 * @requires PHP 5.4.0
Chris@0 149 */
Chris@0 150 public function testGetMockForTraitStubbingAbstractMethod()
Chris@0 151 {
Chris@0 152 $mock = $this->generator->getMockForTrait('AbstractTrait');
Chris@0 153 $this->assertTrue(method_exists($mock, 'doSomething'));
Chris@0 154 }
Chris@0 155
Chris@0 156 /**
Chris@0 157 * @requires PHP 5.4.0
Chris@0 158 */
Chris@0 159 public function testGetMockForSingletonWithReflectionSuccess()
Chris@0 160 {
Chris@0 161 // Probably, this should be moved to tests/autoload.php
Chris@0 162 require_once __DIR__ . '/_fixture/SingletonClass.php';
Chris@0 163
Chris@0 164 $mock = $this->generator->getMock('SingletonClass', array('doSomething'), array(), '', false);
Chris@0 165 $this->assertInstanceOf('SingletonClass', $mock);
Chris@0 166 }
Chris@0 167
Chris@0 168 /**
Chris@0 169 * Same as "testGetMockForSingletonWithReflectionSuccess", but we expect
Chris@0 170 * warning for PHP < 5.4.0 since PHPUnit will try to execute private __wakeup
Chris@0 171 * on unserialize
Chris@0 172 */
Chris@0 173 public function testGetMockForSingletonWithUnserializeFail()
Chris@0 174 {
Chris@0 175 if (version_compare(PHP_VERSION, '5.4.0', '>=')) {
Chris@0 176 $this->markTestSkipped('Only for PHP < 5.4.0');
Chris@0 177 }
Chris@0 178
Chris@0 179 $this->setExpectedException('PHPUnit_Framework_MockObject_RuntimeException');
Chris@0 180
Chris@0 181 // Probably, this should be moved to tests/autoload.php
Chris@0 182 require_once __DIR__ . '/_fixture/SingletonClass.php';
Chris@0 183
Chris@0 184 $mock = $this->generator->getMock('SingletonClass', array('doSomething'), array(), '', false);
Chris@0 185 }
Chris@0 186
Chris@0 187 /**
Chris@0 188 * ReflectionClass::getMethods for SoapClient on PHP 5.3 produces PHP Fatal Error
Chris@0 189 * @runInSeparateProcess
Chris@0 190 */
Chris@0 191 public function testGetMockForSoapClientReflectionMethodsDuplication()
Chris@0 192 {
Chris@0 193 if (version_compare(PHP_VERSION, '5.4.0', '>=')) {
Chris@0 194 $this->markTestSkipped('Only for PHP < 5.4.0');
Chris@0 195 }
Chris@0 196
Chris@0 197 $mock = $this->generator->getMock('SoapClient', array(), array(), '', false);
Chris@0 198 $this->assertInstanceOf('SoapClient', $mock);
Chris@0 199 }
Chris@0 200 }