Tengo dificultades para burlarme del objeto PDO con PHPUnit.Burlarse del objeto PDO utilizando PHPUnit
No parece ser mucho más información en la web acerca de mi problema, pero de lo que he entendido:
- DOP tiene __wakeup 'final' y métodos __sleep que le impiden ser serializado.
- La implementación de objetos ficticios de PHPunit serializa el objeto en algún momento.
- Las pruebas de la unidad luego fallan con un error PHP generado por PDO cuando esto ocurre.
Hay una característica destinadas a evitar este comportamiento, añadiendo la siguiente línea a su unidad de prueba:
class MyTest extends PHPUnit_Framework_TestCase
{
protected $backupGlobals = FALSE;
// ...
}
Fuente: http://sebastian-bergmann.de/archives/797-Global-Variables-and-PHPUnit.html
Esto no es trabajo para mí, mi prueba sigue produciendo un error.
completo código de prueba:
class MyTest extends PHPUnit_Framework_TestCase
{
/**
* @var MyTest
*/
private $MyTestr;
protected $backupGlobals = FALSE;
/**
* Prepares the environment before running a test.
*/
protected function setUp()
{
parent::setUp();
}
/**
* Cleans up the environment after running a test.
*/
protected function tearDown()
{
parent::tearDown();
}
public function __construct()
{
$this->backupGlobals = false;
parent::__construct();
}
/**
* Tests MyTest->__construct()
*/
public function test__construct()
{
$pdoMock = $this->getMock('PDO', array('prepare'), array(), '', false);
$classToTest = new MyTest($pdoMock);
// Assert stuff here!
}
// More test code.......
Cualquier PHPUnit pro de darme una mano?
Gracias,
Ben
Esto hace el trabajo. ¡Gracias! – uckelman
¡Eres el papá! Muchas gracias, esto funciona bien. ¡Había renunciado a resolver este problema! –
Tuve el mismo problema que el póster original y utilicé su solución. Sin embargo, ahora mi tipificación ya no lo veo como PDO. 'debe ser una instancia de PDO, instancia de Mock_PDOMock_96936f72 dado' – nvanesch