PHP Infection помечает ложные непокрытые мутанты
У меня есть простой класс Count:
class BsCount
{
public function __construct(
private int $count = 0
) {
}
public function increment()
{
return new self($this->count + 1);
}
public function value()
{
return $this->count;
}
}
И тест PHPUnit для него:
public function testCountsCorrectlyIfInitialIsNotPresent(): void
{
$this->assertEquals(
3,
(new BsCount())
->increment()
->increment()
->increment()
->value()
);
}
Если я вручную изменю значение по умолчанию
$count
значение -1 или 1, тест не пройден. Однако, когда Infection изменяет значение по умолчанию на -1 или 1, все тесты проходят успешно, и мутант помечается как непокрытый в отчете(U).
В чем причина этого? Версии: PHP 8.02, PHPUnit 9.5.16, Infection 0.23.0.