J'ai de la difficulté à me moquer de l'objet PDO avec PHPUnit.Mocking L'objet PDO utilisant PHPUnit
Il ne semble pas y avoir beaucoup d'informations sur le web au sujet de mon problème, mais de ce que je peux recueillir:
- AOP a __wakeup « finale » et méthodes de __sleep qui l'empêchent d'être sérialisé.
- L'implémentation de l'objet mock de PHPunit sérialise l'objet à un moment donné.
- Les tests unitaires échouent alors avec une erreur PHP générée par PDO lorsque cela se produit.
Il existe une fonction destinée à empêcher ce comportement, en ajoutant la ligne suivante à votre test unitaire:
class MyTest extends PHPUnit_Framework_TestCase
{
protected $backupGlobals = FALSE;
// ...
}
Source: http://sebastian-bergmann.de/archives/797-Global-Variables-and-PHPUnit.html
Ce isnt travail pour moi, mon test produit encore une erreur.
Code Test complet:
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.......
Toute PHPUnit pro me donner un coup de main?
Merci,
Ben
Cela fait le travail. Merci! – uckelman
Vous êtes le papa! Merci beaucoup cela fonctionne très bien. J'avais renoncé à résoudre ce problème! –
J'ai eu le même problème que l'affiche originale et utilisé votre solution. Cependant maintenant mon typehinting ne le voit plus comme PDO. 'doit être une instance de PDO, instance de Mock_PDOMock_96936f72 donné' – nvanesch