Skip to content

Commit f6bc56e

Browse files
authored
Merge pull request #47 from W0rma/fix-compatibility-with-phpunit10-4
Fix compatibility with PHPUnit 10.4
2 parents 4aaeffd + c996399 commit f6bc56e

File tree

1 file changed

+19
-12
lines changed

1 file changed

+19
-12
lines changed

src/Stub.php

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -415,7 +415,12 @@ public static function constructEmptyExcept(
415415

416416
private static function generateMock()
417417
{
418-
return self::doGenerateMock(func_get_args());
418+
$args = func_get_args();
419+
if (version_compare(PHPUnitVersion::series(), '10.4', '>=') && !is_bool($args[1])) {
420+
array_splice($args, 1, 0, [true]);
421+
}
422+
423+
return self::doGenerateMock($args);
419424
}
420425

421426
/**
@@ -433,26 +438,28 @@ private static function generateMockForAbstractClass(): object
433438
private static function doGenerateMock($args, $isAbstract = false)
434439
{
435440
$testCase = self::extractTestCaseFromArgs($args);
436-
$methodName = $isAbstract ? 'getMockForAbstractClass' : 'getMock';
441+
442+
// PHPUnit 10.4 changed method names
443+
if (version_compare(PHPUnitVersion::series(), '10.4', '>=')) {
444+
$methodName = $isAbstract ? 'mockObjectForAbstractClass' : 'testDouble';
445+
} else {
446+
$methodName = $isAbstract ? 'getMockForAbstractClass' : 'getMock';
447+
}
448+
437449
// PHPUnit 10.3 changed the namespace
438450
if (version_compare(PHPUnitVersion::series(), '10.3', '>=')) {
439451
$generatorClass = new Generator();
440452
} else {
441453
$generatorClass = new LegacyGenerator();
442454
}
443455

444-
// using PHPUnit 5.4 mocks registration
445-
if (version_compare(PHPUnitVersion::series(), '5.4', '>=')
446-
&& $testCase instanceof PHPUnitTestCase
447-
) {
448-
$mock = call_user_func_array([$generatorClass, $methodName], $args);
449-
$testCase->registerMockObject($mock);
450-
return $mock;
451-
}
456+
$mock = call_user_func_array([$generatorClass, $methodName], $args);
457+
452458
if ($testCase instanceof PHPUnitTestCase) {
453-
$generatorClass = $testCase;
459+
$testCase->registerMockObject($mock);
454460
}
455-
return call_user_func_array([$generatorClass, $methodName], $args);
461+
462+
return $mock;
456463
}
457464

458465
private static function extractTestCaseFromArgs(&$args)

0 commit comments

Comments
 (0)