Tests: Replace the native PHPUnit getMockForAbstractClass()
and getMockBuilder()
methods.
This avoids parse errors in PHPUnit internals due to `match` being a reserved keyword in PHP 8. To run on PHP 8, the tests relying on these methods require PHPUnit 9.3 or later. When the test suite is updated for compatibility with PHPUnit 9.x, these overrides can be removed. See #50913, #50902. git-svn-id: https://develop.svn.wordpress.org/trunk@48972 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
9066eb15a2
commit
1a89e63838
@ -37,4 +37,64 @@ class WP_UnitTestCase extends WP_UnitTestCase_Base {
|
||||
|
||||
static::assertThat( $actual, $constraint, $message );
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a mock object for the specified abstract class with all abstract
|
||||
* methods of the class mocked. Concrete methods to mock can be specified with
|
||||
* the last parameter.
|
||||
*
|
||||
* This method replaces the native PHPUnit method to avoid parse errors
|
||||
* due to `match` being a reserved keyword in PHP 8.
|
||||
*
|
||||
* To run on PHP 8, the tests using this method require PHPUnit 9.3 or later.
|
||||
*
|
||||
* When the test suite is updated for compatibility with PHPUnit 9.x,
|
||||
* this override can be removed.
|
||||
*
|
||||
* @since 5.6.0
|
||||
*
|
||||
* @param string $original_class_name
|
||||
* @param string $mock_class_name
|
||||
* @param bool $call_original_constructor
|
||||
* @param bool $call_original_clone
|
||||
* @param bool $call_autoload
|
||||
* @param array $mocked_methods
|
||||
* @param bool $clone_arguments
|
||||
*
|
||||
* @throws \ReflectionException
|
||||
* @throws RuntimeException
|
||||
* @throws Exception
|
||||
*
|
||||
* @return MockObject
|
||||
*/
|
||||
public function getMockForAbstractClass( $original_class_name, array $arguments = array(), $mock_class_name = '', $call_original_constructor = true, $call_original_clone = true, $call_autoload = true, $mocked_methods = array(), $clone_arguments = false ): PHPUnit\Framework\MockObject\MockObject {
|
||||
if ( PHP_VERSION_ID >= 80000 && version_compare( tests_get_phpunit_version(), '9.3', '<' ) ) {
|
||||
$this->markTestSkipped( 'To run on PHP 8, this test requires PHPUnit 9.3 or later.' );
|
||||
}
|
||||
|
||||
return parent::getMockForAbstractClass( $original_class_name, $arguments, $mock_class_name, $call_original_constructor, $call_original_clone, $call_autoload, $mocked_methods, $clone_arguments );
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a builder object to create mock objects using a fluent interface.
|
||||
*
|
||||
* This method replaces the native PHPUnit method to avoid parse errors
|
||||
* due to `match` being a reserved keyword in PHP 8.
|
||||
*
|
||||
* To run on PHP 8, the tests using this method require PHPUnit 9.3 or later.
|
||||
*
|
||||
* When the test suite is updated for compatibility with PHPUnit 9.x,
|
||||
* this override can be removed.
|
||||
*
|
||||
* @since 5.6.0
|
||||
*
|
||||
* @param string|string[] $class_name
|
||||
*/
|
||||
public function getMockBuilder( $class_name ): PHPUnit\Framework\MockObject\MockBuilder {
|
||||
if ( PHP_VERSION_ID >= 80000 && version_compare( tests_get_phpunit_version(), '9.3', '<' ) ) {
|
||||
$this->markTestSkipped( 'To run on PHP 8, this test requires PHPUnit 9.3 or later.' );
|
||||
}
|
||||
|
||||
return parent::getMockBuilder( $class_name );
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user