Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

`assertTrue` seems to lose inferred type

Abierto
#229 2 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
68/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
php
Área
testing

Línea de trabajo

Start with the reproduction in tests/MockServerTrait.php, using the listed phpstan/phpstan and phpstan/phpstan-phpunit versions, and compare the dumped types before and after self::assertTrue. Trace how the PHPUnit assertTrue call is handled, then verify that the non-null MockWebServer type is preserved and the return-type error disappears.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

  • phpstan/phpstan v2.1.13
  • phpstan/phpstan-phpunit v2.0.6

Given the following trait:

trait MockServerTrait
{
    private static ?MockWebServer\MockWebServer $mockServer = null;

    protected static function startMockServer(
        string $host = '127.0.0.1',
        int $port = 2083,
    ): MockWebServer\MockWebServer {
        self::$mockServer?->stop();
        self::$mockServer = new MockWebServer\MockWebServer($port, $host);
        self::$mockServer->start();

        \PHPStan\dumpType(self::$mockServer); // line 55
        self::assertTrue(self::$mockServer->isRunning());
        \PHPStan\dumpType(self::$mockServer); // line 57

        return self::$mockServer; // line 59
    }
}

When running PHPStan, I get the following errors:

------ --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 
  Line   tests/MockServerTrait.php (in context of class EliasHaeussler\CpanelRequests\Tests\MockServerAwareTestCase)                                                                                  
 ------ --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 
  55     Dumped type: donatj\MockWebServer\MockWebServer                                                                                                                                              
         ✏️  tests/MockServerTrait.php:55                                                                                                                                                             
  57     Dumped type: donatj\MockWebServer\MockWebServer|null                                                                                                                                         
         ✏️  tests/MockServerTrait.php:57                                                                                                                                                             
  59     Method EliasHaeussler\CpanelRequests\Tests\MockServerAwareTestCase::startMockServer() should return donatj\MockWebServer\MockWebServer but returns donatj\MockWebServer\MockWebServer|null.  
         🪪  return.type                                                                                                                                                                              
         ✏️  tests/MockServerTrait.php:59                                                                                                                                                             
 ------ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

When I omit the last self::assertTrue, no errors are reported anymore.

Lenguaje dominante
PHP
Estrellas
544
Forks
58
Merge medio
2 d 1 h
PR fusionados (30 d)
5

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de phpstan/phpstan-phpunit

Todos los issues de phpstan/phpstan-phpunit

Issues similares

Más issues de PHP

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.