ClosureUsesThisRule produces false positive with Prophecy will()
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 35/100
Línea de trabajo
Start with the supplied PHPUnit and Prophecy reproducer and inspect the implementation of ClosureUsesThisRule. Confirm that the closure passed to Prophecy's will() is analyzed with the correct $this context, then use the example as a regression test whose expected result is no false positive.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
If you replace $that by $this in the closure of the following, the test will fail.
At runtime, the type of $this is \Prophecy\Prophecy\ObjectProphecy and the type of $that is MyTest.
<?php
declare(strict_types=1);
// Requires phpunit/phpunit, phpspec/prophecy and phpspec/prophecy-phpunit
namespace foo;
use PHPUnit\Framework\TestCase;
use Prophecy\Argument;
use Prophecy\PhpUnit\ProphecyTrait;
class MyTarget
{
public function run(string $input): string
{
return $input;
}
}
class MyTest extends TestCase
{
use ProphecyTrait;
private array $stuff = ['foo' => 'bar'];
public function testMyMock(): void
{
$prophecy = $this->prophesize(MyTarget::class);
$that = $this;
$prophecy->run(Argument::type('string'))->will(
function (array $args) use ($that): string {
return $that->stuff[$args[0]] ?? $args[0];
}
);
$target = $prophecy->reveal();
$result = $target->run('foo');
self::assertSame('bar', $result);
}
}
- Lenguaje dominante
- PHP
- Estrellas
- 709
- Forks
- 62
- Merge medio
- 5 d 19 h
- PR fusionados (30 d)
- 3
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de phpstan/phpstan-strict-rules
-
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
phpstan/phpstan-strict-rules#317 · 1 comentario ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
phpstan/phpstan-strict-rules#316 · 3 comentarios ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 52/100
phpstan/phpstan-strict-rules#298 · 2 comentarios · 1 reacción ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
phpstan/phpstan-strict-rules#289 · 1 comentario ·
-
bug
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
phpstan/phpstan-strict-rules#283 · 6 comentarios ·
Todos los issues de phpstan/phpstan-strict-rules
Issues similares
-
tooling
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
UX
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
ProfessionalWiki/NeoWiki#1525 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
bug customer-reported
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
MagnaCapax/PMSS#949 ·
-
responsive-media kses allow-list strips clipPathUnits, collapsing objectBoundingBox clip paths Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
Automattic/static-site-importer#1829 ·