1--TEST-- 2PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', true, true) 3--SKIPIF-- 4<?php 5if (!version_compare(PHP_VERSION, '7.0', '>=')) print 'skip: PHP >= 7.0 required'; 6?> 7--FILE-- 8<?php 9class Foo 10{ 11 public static function bar(string $baz): Bar 12 { 13 return 'test'; 14 } 15} 16 17require __DIR__ . '/../../../vendor/autoload.php'; 18 19$generator = new PHPUnit_Framework_MockObject_Generator; 20 21$mock = $generator->generate( 22 'Foo', 23 array(), 24 'MockFoo', 25 true, 26 true 27); 28 29print $mock['code']; 30?> 31--EXPECTF-- 32class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject 33{ 34 private $__phpunit_invocationMocker; 35 private $__phpunit_originalObject; 36 private $__phpunit_configurable = ['bar']; 37 38 public function __clone() 39 { 40 $this->__phpunit_invocationMocker = clone $this->__phpunit_getInvocationMocker(); 41 } 42 43 public static function bar(string $baz): Bar 44 { 45 throw new PHPUnit_Framework_MockObject_BadMethodCallException('Static method "bar" cannot be invoked on mock object'); 46 } 47 48 public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher) 49 { 50 return $this->__phpunit_getInvocationMocker()->expects($matcher); 51 } 52 53 public function method() 54 { 55 $any = new PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount; 56 $expects = $this->expects($any); 57 return call_user_func_array(array($expects, 'method'), func_get_args()); 58 } 59 60 public function __phpunit_setOriginalObject($originalObject) 61 { 62 $this->__phpunit_originalObject = $originalObject; 63 } 64 65 public function __phpunit_getInvocationMocker() 66 { 67 if ($this->__phpunit_invocationMocker === null) { 68 $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker($this->__phpunit_configurable); 69 } 70 71 return $this->__phpunit_invocationMocker; 72 } 73 74 public function __phpunit_hasMatchers() 75 { 76 return $this->__phpunit_getInvocationMocker()->hasMatchers(); 77 } 78 79 public function __phpunit_verify($unsetInvocationMocker = true) 80 { 81 $this->__phpunit_getInvocationMocker()->verify(); 82 83 if ($unsetInvocationMocker) { 84 $this->__phpunit_invocationMocker = null; 85 } 86 } 87} 88