123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- ======================================
- Rule ``php_unit_data_provider_static``
- ======================================
- Data providers must be static.
- Warning
- -------
- Using this rule is risky
- ~~~~~~~~~~~~~~~~~~~~~~~~
- Fixer could be risky if one is calling data provider function dynamically.
- Configuration
- -------------
- ``force``
- ~~~~~~~~~
- Whether to make the data providers static even if they have a dynamic class call
- (may introduce fatal error "using $this when not in object context", and you may
- have to adjust the code manually by converting dynamic calls to static ones).
- Allowed types: ``bool``
- Default value: ``false``
- Examples
- --------
- Example #1
- ~~~~~~~~~~
- *Default* configuration.
- .. code-block:: diff
- --- Original
- +++ New
- <?php
- class FooTest extends TestCase {
- /**
- * @dataProvider provideSomethingCases
- */
- public function testSomething($expected, $actual) {}
- - public function provideSomethingCases() {}
- + public static function provideSomethingCases() {}
- }
- Example #2
- ~~~~~~~~~~
- With configuration: ``['force' => true]``.
- .. code-block:: diff
- --- Original
- +++ New
- <?php
- class FooTest extends TestCase {
- /**
- * @dataProvider provideSomethingCases1
- * @dataProvider provideSomethingCases2
- */
- public function testSomething($expected, $actual) {}
- - public function provideSomethingCases1() { $this->getData1(); }
- - public function provideSomethingCases2() { self::getData2(); }
- + public static function provideSomethingCases1() { $this->getData1(); }
- + public static function provideSomethingCases2() { self::getData2(); }
- }
- Example #3
- ~~~~~~~~~~
- With configuration: ``['force' => false]``.
- .. code-block:: diff
- --- Original
- +++ New
- <?php
- class FooTest extends TestCase {
- /**
- * @dataProvider provideSomething1Cases
- * @dataProvider provideSomething2Cases
- */
- public function testSomething($expected, $actual) {}
- public function provideSomething1Cases() { $this->getData1(); }
- - public function provideSomething2Cases() { self::getData2(); }
- + public static function provideSomething2Cases() { self::getData2(); }
- }
- Rule sets
- ---------
- The rule is part of the following rule sets:
- - `@PHPUnit100Migration:risky <./../../ruleSets/PHPUnit100MigrationRisky.rst>`_ with config:
- ``['force' => true]``
- - `@PhpCsFixer:risky <./../../ruleSets/PhpCsFixerRisky.rst>`_ with config:
- ``['force' => true]``
- References
- ----------
- - Fixer class: `PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDataProviderStaticFixer <./../../../src/Fixer/PhpUnit/PhpUnitDataProviderStaticFixer.php>`_
- - Test class: `PhpCsFixer\\Tests\\Fixer\\PhpUnit\\PhpUnitDataProviderStaticFixerTest <./../../../tests/Fixer/PhpUnit/PhpUnitDataProviderStaticFixerTest.php>`_
- The test class defines officially supported behaviour. Each test case is a part of our backward compatibility promise.
|