Zend_Test-PHPUnit.xml 4.1 KB

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