phpstan-phpunit
phpstan-phpunit copied to clipboard
Call to method PHPUnit\Framework\Assert::assertSame() with {int} and int will always evaluate to false.
Given this class:
<?php
declare(strict_types=1);
namespace ApiPlatform\Core\Identifier\Normalizer;
use Symfony\Component\Serializer\Normalizer\DenormalizerInterface;
final class IntegerDenormalizer implements DenormalizerInterface
{
public function denormalize($data, $class, $format = null, array $context = []): int
{
return (int) $data;
}
}
And calling assertSame
like this:
<?php
declare(strict_types=1);
namespace ApiPlatform\Core\Tests\Identifier\Normalizer;
use ApiPlatform\Core\Identifier\Normalizer\IntegerDenormalizer;
use PHPUnit\Framework\TestCase;
class IntegerDenormalizerTest extends TestCase
{
public function testDenormalize()
{
$this->assertSame(2, (new IntegerDenormalizer())->denormalize('2', 'int'));
}
}
Gives an error such as:
------ -----------------------------------------------------------------------------------------------------
Line tests/Identifier/Normalizer/IntegerDenormalizerTest.php
------ -----------------------------------------------------------------------------------------------------
26 Call to method PHPUnit\Framework\Assert::assertSame() with 2 and int will always evaluate to false.
------ -----------------------------------------------------------------------------------------------------
I ran into the same issue with assertSame()
use PHPUnit\Framework\TestCase;
final class Test extends TestCase
{
public function test(): void
{
touch('/file');
$handle = fopen('/file', 'rwb');
self::assertSame(0, fwrite($handle, 'data'));
self::assertSame('data', fread($handle, 2));
}
}
Call to static method PHPUnit\Framework\Assert::assertSame() with 0 and int<0, max>|false will always evaluate to true.
Call to static method PHPUnit\Framework\Assert::assertSame() with 'data' and string|false will always evaluate to true.