Zend_Test-PHPUnit.xml 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!-- EN-Revision: 12339 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.test.phpunit" xmlns:xi="http://www.w3.org/2001/XInclude">
  5. <title>Zend_Test_PHPUnit</title>
  6. <para><classname>Zend_Test_PHPUnit</classname> fournit un TestCase pour les applications MVC qui contient des assertions qui
  7. permettent de tester toute une variété de responsabilités. La manière la plus facile de comprendre ce qui peut être
  8. fait est de regarder l'exemple suivant.</para>
  9. <example id="zend.test.phpunit.loginexample">
  10. <title>Exemple d'un TestCase d'une application de login</title>
  11. <para>L'exemple suivant est un simple test pour un contrôleur <code>UserController</code> permettant de vérifier
  12. différentes choses :</para>
  13. <itemizedlist>
  14. <listitem>
  15. <para>Le formulaire de login doit être affiché aux utilisateurs non-authentifiés.</para>
  16. </listitem>
  17. <listitem>
  18. <para>Quand un utilisateur se connecte, il doit être redirigé vers sa page de profil, et cette page doit
  19. affichée des infofrmations particulières.</para>
  20. </listitem>
  21. </itemizedlist>
  22. <para>Cet exemple particulier suppose différentes choses. Premièrement, la majeure partie de notre fichier
  23. d'amorçage a été déplacé dans un plugin. Ceci simplifie le paramétrage dans le cas des tests en spécifiant
  24. rapidement votre environnement, et ainsi vous permet d'amorcer votre application en une seule ligne. Ensuite,
  25. notre exemple suppose que le chargement automatique ("autoload") est activé donc nous n'avons pas à nous soucier
  26. de charger les classes appropriées (comme le bon contrôleur, le bon plugin, etc.)</para>
  27. <programlisting role="php"><![CDATA[
  28. class UserControllerTest extends Zend_Test_PHPUnit_ControllerTestCase
  29. {
  30. public function setUp()
  31. {
  32. $this->bootstrap = array($this, 'appBootstrap');
  33. parent::setUp();
  34. }
  35. public function appBootstrap()
  36. {
  37. $this->frontController->registerPlugin(
  38. new Bugapp_Plugin_Initialize('development')
  39. );
  40. }
  41. public function testCallWithoutActionShouldPullFromIndexAction()
  42. {
  43. $this->dispatch('/user');
  44. $this->assertController('user');
  45. $this->assertAction('index');
  46. }
  47. public function testIndexActionShouldContainLoginForm()
  48. {
  49. $this->dispatch('/user');
  50. $this->assertAction('index');
  51. $this->assertQueryCount('form#loginForm', 1);
  52. }
  53. public function testValidLoginShouldGoToProfilePage()
  54. {
  55. $this->request->setMethod('POST')
  56. ->setPost(array(
  57. 'username' => 'foobar',
  58. 'password' => 'foobar'
  59. ));
  60. $this->dispatch('/user/login');
  61. $this->assertRedirectTo('/user/view');
  62. $this->resetRequest()
  63. ->resetResponse();
  64. $this->request->setMethod('GET')
  65. ->setPost(array());
  66. $this->dispatch('/user/view');
  67. $this->assertRoute('default');
  68. $this->assertModule('default');
  69. $this->assertController('user');
  70. $this->assertAction('view');
  71. $this->assertNotRedirect();
  72. $this->assertQuery('dl');
  73. $this->assertQueryContentContains('h2', 'User: foobar');
  74. }
  75. }
  76. ]]></programlisting>
  77. <para>Cet exemple pourrait être écrit plus simplement : toutes les assertions ne sont pas nécessaires et sont
  78. fournies seulement à titre d'illustration. Cependant, il montre bien combien il est simple de tester vos
  79. applications.</para>
  80. </example>
  81. <xi:include href="Zend_Test-PHPUnit-Bootstrapping.xml" />
  82. <xi:include href="Zend_Test-PHPUnit-Testing.xml" />
  83. <xi:include href="Zend_Test-PHPUnit-Assertions.xml" />
  84. <xi:include href="Zend_Test-PHPUnit-Examples.xml" />
  85. </sect1>