johnbillion / falsey-assertequals-detector
检测使用 assertEquals() 与 falsy 值的情况,并将测试标记为风险。
3.2.0
2021-01-08 12:31 UTC
Requires
- phpunit/phpunit: ^7 | ^8 | ^9
README
此包会在使用 assertEquals() 测试 falsy 值时将 PHPUnit 测试标记为风险。
为什么?
assertEquals()
不区分类型,这意味着使用它检查 falsy 值可能会导致测试在没有错误的情况下通过。例如,这个断言通过了,但可能并不期望如此
$expected = false; $actual = 0; assertEquals( $expected, $actual );
相反,在测试 falsy 值时应使用 assertSame()
。
此包会在使用 assertEquals() 测试 falsy 值时将测试标记为风险,以便您可以调查测试并按需改进断言。
Falsy 值包括
- 空数组
- 空字符串
- 布尔值
false
- 浮点数
0.0
- 整数
0
null
- 字符串
'0'
安装
composer require --dev johnbillion/falsey-assertequals-detector=^3
支持 PHPUnit 7、8 和 9。
- 对于 PHPUnit 6 支持,使用版本
^2
。 - 对于 PHPUnit 5 支持,使用版本
^1
。
使用方法
在您的基测试类中使用 traits
class My_Test extends \PHPUnit\Framework\TestCase { + use \FalseyAssertEqualsDetector\Test; + public function testSomethingFalsey() { $this->assertEquals( 0, false ); } }
每次您的测试调用 assertEquals()
时,如果期望值或实际值中的任何一个为 falsy,测试将被标记为风险。
示例输出
1) test_foo
A falsey value is being used in assertEquals().
Expected type: string
Expected value: ''
Actual type: boolean
Actual value: false