PHPStan
Unidad PHP
Esta extensión proporciona las siguientes características:
Los métodos createMock()
, getMockForAbstractClass()
y getMockFromWsdl()
devuelven un tipo de intersección (consulte la explicación detallada de los tipos de intersección) del objeto simulado y la clase simulada, de modo que ambos métodos del objeto simulado (como expects
) y de la clase simulada están disponibles en el objeto.
También se admite la llamada getMock()
en MockBuilder
.
Interpreta Foo|PHPUnit_Framework_MockObject_MockObject
en phpDoc para que dé como resultado un tipo de intersección en lugar de un tipo de unión.
Define llamadas al método de terminación anticipada para la clase PHPUnitFrameworkTestCase
para evitar errores de variables no definidas.
Especifica tipos de expresiones pasadas a varios métodos assert
como assertInstanceOf
, assertTrue
, assertInternalType
, etc.
Combinado con el nivel 4 de PHPStan, señala afirmaciones siempre verdaderas y siempre falsas como assertTrue(true)
etc.
También contiene estas estrictas reglas específicas del marco (se pueden habilitar por separado):
Compruebe que no esté utilizando assertSame()
con el valor true
como se esperaba. En su lugar, se debe utilizar assertTrue()
.
Compruebe que no esté utilizando assertSame()
con false
como valor esperado. En su lugar, se debe utilizar assertFalse()
.
Compruebe que no esté utilizando assertSame()
con null
como valor esperado. En su lugar, se debe utilizar assertNull()
.
Compruebe que no esté utilizando assertSame()
con count($variable)
como segundo parámetro. En su lugar, se debe utilizar assertCount($variable)
.
Si necesita configurar el simulacro incluso después de asignarlo a una propiedad o devolverlo desde un método, debe agregar PHPUnit_Framework_MockObject_MockObject
al phpDoc:
/** * @return Foo&PHPUnit_Framework_MockObject_MockObject */función privada createFooMock() { return $this->createMock(Foo::clase); }prueba de función públicaAlgo() { $fooMock = $this->createFooMock(); $fooMock->method('doFoo')->will($this->returnValue('test')); $fooMock->doFoo(); }
Tenga en cuenta que la sintaxis correcta para los tipos de intersección es Foo&PHPUnit_Framework_MockObject_MockObject
. Foo|PHPUnit_Framework_MockObject_MockObject
también es compatible, pero solo por razones de ecosistema y legado.
Si el simulacro está completamente configurado y se supone que solo los métodos de la clase simulada deben llamarse en el valor, está bien escribir solo la clase simulada:
/** @var Foo */privado $foo;función protegida setUp() { $fooMock = $this->createMock(Foo::clase); $fooMock->method('doFoo')->will($this->returnValue('test')); $this->foo = $fooMock; }prueba de función públicaAlgo() { $esto->foo->doFoo(); // $this->foo->method() y expect() ya no se pueden llamar}
Para usar esta extensión, solicítela en Composer:
composer require --dev phpstan/phpstan-phpunit
Si también instala phpstan/extension-installer, ¡ya está todo listo!
Si no desea utilizar phpstan/extension-installer
, incluya extension.neon en la configuración PHPStan de su proyecto:
includes: - vendor/phpstan/phpstan-phpunit/extension.neon
Para realizar comprobaciones específicas del marco, incluya también este archivo:
- vendor/phpstan/phpstan-phpunit/rules.neon