juin
2008
Voila, ça fait plusieurs mois que Matthew Weier O’Phinney (responsable MVC/Zend_Form ZendFramework) travaille sur une extention de PHPUnit pour tester facilement son modèle MVC.
J’ai d’ailleurs eu l’occasion de le tester moi-même, et il vient d’annoncer la disponibilité d’une preview
C’est alléchant, voyez plutôt :
- Méthodes de configuration des objets de requête et réponse (paramètres GET, POST, COOKIE, en-têtes…)
- Zend_Dom_Query, utilise les selecteurs CSS et Xpath pour chercher dans les documents (X)HTML et XML.
- Des contraintes PHPUnit utilisant Zend_Dom_Query et l’objet de résponse pour les comparer.
- Un cas de test PHPUnit qui permet la configuration du bootstrap, le dispatching, et tout un tas d’assertions les concernant.
Que peut-on tester ?
- Codes réponse HTTP
- Présence d’en-têtes HTTP de réponse, valeurs.
- Si l’action a abouti en une redirection, si oui, vers où?.
- Présence de noeuds DOM
- Module, contrôleur, action utilisés dans la dernière boucle de dispatching.
- Route selectionnée.
Un petit essai ?
class UserControllerTest extends Zend_Test_PHPUnit_ControllerTestCase
{
public function setUp()
{
$this->bootstrap = array($this, ‘appBootstrap’);
parent::setUp();
}public function appBootstrap()
{
$this->frontController->registerPlugin(
new Bugapp_Plugin_Initialize(‘test’)
);
}public function testCallingControllerWithoutActionShouldPullFromIndexAction()
{
$this->dispatch(‘/user’);
$this->assertResponseCode(200);
$this->assertController(‘user’);
$this->assertAction(‘index’);
}public function testIndexActionShouldContainLoginForm()
{
$this->dispatch(‘/user’);
$this->assertResponseCode(200);
$this->assertSelect(‘form#login’);
}public function testValidLoginShouldInitializeAuthSessionAndRedirectToProfilePage()
{
$this->request
->setMethod(‘POST’)
->setPost(array(
‘username’ => ‘foobar’,
‘password’ => ‘foobar’
));
$this->dispatch(‘/user/login’);
$this->assertTrue(Zend_Auth::getInstance()->hasIdentity());
$this->assertRedirectTo(‘/user/view’);
}
}
Le code est sur le dépot SVN (incubateur)
La doucmentation aussi (XML lisible)
Le billet blog de Matthew
Ca sera inclus à terme dans la distribution sous le dossier tests/
Commentaires récents
Archives
- novembre 2010
- août 2010
- juillet 2010
- juin 2010
- mai 2010
- avril 2010
- mars 2010
- février 2010
- janvier 2010
- décembre 2009
- novembre 2009
- octobre 2009
- septembre 2009
- août 2009
- juillet 2009
- juin 2009
- mai 2009
- avril 2009
- mars 2009
- février 2009
- janvier 2009
- décembre 2008
- novembre 2008
- octobre 2008
- septembre 2008
- août 2008
- juillet 2008
- juin 2008
- mai 2008
- avril 2008
- mars 2008
- février 2008
- janvier 2008
- décembre 2007
- novembre 2007
- octobre 2007
- septembre 2007
- août 2007
- juillet 2007
- juin 2007
- mai 2007
- avril 2007
- mars 2007
- février 2007