johnbillion/falsey-assertequals-detector

检测使用 assertEquals() 与 falsy 值的情况,并将测试标记为风险。

3.2.0 2021-01-08 12:31 UTC

This package is auto-updated.

Last update: 2024-09-08 20:28:57 UTC


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