assertEquals用于断言弱类型比较,即仅仅比较值本身,不在乎数据类型。
像是1和”1”这样的比较断言是能通过的,只是在报告中视为不同。那么如果要能看到这个报告,则至少有一个明显的值都不同的情况,不然就直接断言通过了,不显示报告了。
像是下面这样就是我将3和33比对产生明显的值不同的情况,以使得1和”1”这种虽然能通过断言,但是也能产生报告。
ArrayWeakComparisonTest.php:
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;
final class ArrayWeakComparisonTest extends TestCase
{
public function testEquality(): void
{
//原型:assertEquals(mixed $expected, mixed $actual[, string $message = ''])
//当两个变量 $expected 和 $actual 不相等时报告错误,错误讯息由 $message 指定。和assertSame()不同,assertEquals仅仅比较值的类型
$this->assertEquals(
[1, 2, 3, 4, 5, 6],
['1', 2, 33, 4, 5, 6]
);
}
}
运行效果如:
C:\Users\Administrator>D:\phpstudy_pro\Extensions\php\php7.3.4nts\php.exe D:\phpstudy_pro\Extensions\php\php7.3.4nts\phpunit-9.5.8.phar C:\Users\Administrator\PhpstormProjects\untitled\ArrayWeakComparisonTest.php
PHPUnit 9.5.8 by Sebastian Bergmann and contributors.
F 1 / 1 (100%)
Time: 00:00.004, Memory: 20.00 MB
There was 1 failure:
1) ArrayWeakComparisonTest::testEquality
Failed asserting that two arrays are equal.
--- Expected
+++ Actual
@@ @@
Array (
- 0 => 1
+ 0 => '1'
1 => 2
- 2 => 3
+ 2 => 33
3 => 4
4 => 5
5 => 6
)
C:\Users\Administrator\PhpstormProjects\untitled\ArrayWeakComparisonTest.php:12
FAILURES!
Tests: 1, Assertions: 1, Failures: 1.
那你像下面这样,我如果仅仅只是1和”1”这样类型不同,但值相同,则不会出报告,就直接通过断言了。
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;
final class ArrayWeakComparisonTest extends TestCase
{
public function testEquality(): void
{
//原型:assertEquals(mixed $expected, mixed $actual[, string $message = ''])
//当两个变量 $expected 和 $actual 不相等时报告错误,错误讯息由 $message 指定。和assertSame()不同,assertEquals仅仅比较值的类型
$this->assertEquals(
[1, 2, 3, 4, 5, 6],
['1', 2, 3, 4, 5, 6]
);
}
}
运行效果如:
C:\Users\Administrator>D:\phpstudy_pro\Extensions\php\php7.3.4nts\php.exe D:\phpstudy_pro\Extensions\php\php7.3.4nts\phpunit-9.5.8.phar C:\Users\Administrator\PhpstormProjects\untitled\ArrayWeakComparisonTest.php
PHPUnit 9.5.8 by Sebastian Bergmann and contributors.
. 1 / 1 (100%)
Time: 00:00.004, Memory: 20.00 MB
OK (1 test, 1 assertion)