Rule php_unit_expectation
¶
Usages of ->setExpectedException*
methods MUST be replaced by
->expectException*
methods.
Warning¶
Using this rule is risky¶
Risky when PHPUnit classes are overridden or not accessible, or when project has PHPUnit incompatibilities.
Configuration¶
target
¶
Target version of PHPUnit.
Allowed values: '5.2'
, '5.6'
, '8.4'
and 'newest'
Default value: 'newest'
Examples¶
Example #1¶
Default configuration.
--- Original
+++ New
<?php
final class MyTest extends \PHPUnit_Framework_TestCase
{
public function testFoo()
{
- $this->setExpectedException("RuntimeException", "Msg", 123);
+ $this->expectException("RuntimeException");
+ $this->expectExceptionMessage("Msg");
+ $this->expectExceptionCode(123);
foo();
}
public function testBar()
{
- $this->setExpectedExceptionRegExp("RuntimeException", "/Msg.*/", 123);
+ $this->expectException("RuntimeException");
+ $this->expectExceptionMessageMatches("/Msg.*/");
+ $this->expectExceptionCode(123);
bar();
}
}
Example #2¶
With configuration: ['target' => '8.4']
.
--- Original
+++ New
<?php
final class MyTest extends \PHPUnit_Framework_TestCase
{
public function testFoo()
{
- $this->setExpectedException("RuntimeException", null, 123);
+ $this->expectException("RuntimeException");
+ $this->expectExceptionCode(123);
foo();
}
public function testBar()
{
- $this->setExpectedExceptionRegExp("RuntimeException", "/Msg.*/", 123);
+ $this->expectException("RuntimeException");
+ $this->expectExceptionMessageMatches("/Msg.*/");
+ $this->expectExceptionCode(123);
bar();
}
}
Example #3¶
With configuration: ['target' => '5.6']
.
--- Original
+++ New
<?php
final class MyTest extends \PHPUnit_Framework_TestCase
{
public function testFoo()
{
- $this->setExpectedException("RuntimeException", null, 123);
+ $this->expectException("RuntimeException");
+ $this->expectExceptionCode(123);
foo();
}
public function testBar()
{
- $this->setExpectedExceptionRegExp("RuntimeException", "/Msg.*/", 123);
+ $this->expectException("RuntimeException");
+ $this->expectExceptionMessageRegExp("/Msg.*/");
+ $this->expectExceptionCode(123);
bar();
}
}
Example #4¶
With configuration: ['target' => '5.2']
.
--- Original
+++ New
<?php
final class MyTest extends \PHPUnit_Framework_TestCase
{
public function testFoo()
{
- $this->setExpectedException("RuntimeException", "Msg", 123);
+ $this->expectException("RuntimeException");
+ $this->expectExceptionMessage("Msg");
+ $this->expectExceptionCode(123);
foo();
}
public function testBar()
{
$this->setExpectedExceptionRegExp("RuntimeException", "/Msg.*/", 123);
bar();
}
}
Rule sets¶
The rule is part of the following rule sets:
@PHPUnit52Migration:risky with config:
['target' => '5.2']
@PHPUnit54Migration:risky with config:
['target' => '5.2']
@PHPUnit55Migration:risky with config:
['target' => '5.2']
@PHPUnit56Migration:risky with config:
['target' => '5.6']
@PHPUnit57Migration:risky with config:
['target' => '5.6']
@PHPUnit60Migration:risky with config:
['target' => '5.6']
@PHPUnit75Migration:risky with config:
['target' => '5.6']
@PHPUnit84Migration:risky with config:
['target' => '8.4']
@PHPUnit91Migration:risky with config:
['target' => '8.4']
@PHPUnit100Migration:risky with config:
['target' => '8.4']
References¶
Fixer class: PhpCsFixer\Fixer\PhpUnit\PhpUnitExpectationFixer
Test class: PhpCsFixer\Tests\Fixer\PhpUnit\PhpUnitExpectationFixerTest
The test class defines officially supported behaviour. Each test case is a part of our backward compatibility promise.