Ho difficoltà a deridere l'oggetto PDO con PHPUnit.Mocking dell'oggetto PDO utilizzando PHPUnit
non sembra essere molto informazioni sul web circa il mio problema, ma da quello che ho potuto capire:
- DOP ha 'finale' __wakeup e metodi __sleep che impediscono che venga serializzato.
- L'implementazione di oggetti fittizi di PHP serializza l'oggetto a un certo punto.
- I test delle unità falliscono quindi con un errore PHP generato da PDO quando si verifica ciò.
C'è una funzione destinata a impedire questo comportamento, aggiungendo la seguente riga al test di unità:
class MyTest extends PHPUnit_Framework_TestCase
{
protected $backupGlobals = FALSE;
// ...
}
Fonte: http://sebastian-bergmann.de/archives/797-Global-Variables-and-PHPUnit.html
questo non è lavoro per me, la mia prova produce ancora un errore.
codice di prova completa:
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.......
Qualsiasi PHPUnit pro me di dare una mano?
Grazie,
Ben
Questo fa il lavoro. Grazie! – uckelman
Sei il papà! Grazie mille, questo funziona bene Avevo rinunciato a risolvere questo problema! –
Ho avuto lo stesso problema del poster originale e ho usato la soluzione. Comunque ora il mio typehinting non lo vede più come PDO. 'deve essere un'istanza di PDO, istanza di Mock_PDOMock_96936f72 data' – nvanesch