Zend_Test-PHPUnit.xml 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: 20807 -->
  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> bietet einen Testfall für <acronym>MVC</acronym>-Anwendungen,
  8. der Zusicherungen für Tests auf eine Vielzahl von Verantwortlichkeiten enthält. Um
  9. zu verstehen, was man damit machen kann, ist es wahrscheinlich am einfachsten, sich das folgende
  10. Beispiel anzusehen.
  11. </para>
  12. <example id="zend.test.phpunit.loginexample">
  13. <title>Beispiel eines Testfalls für ein Anwendungs-Login</title>
  14. <para>
  15. Das folgende ist ein einfacher Testfall für einen <classname>UserController</classname>,
  16. um verschiedene Dinge zu prüfen:
  17. </para>
  18. <itemizedlist>
  19. <listitem>
  20. <para>
  21. Das Login-Formular soll nicht-authentifizierten Benutzern angezeigt werden.
  22. </para>
  23. </listitem>
  24. <listitem>
  25. <para>
  26. Wenn sich ein Benutzer einloggt, soll er zu seiner Profilseite umgeleitet
  27. werden und diese Profilseite soll relevante Informationen enthalten.
  28. </para>
  29. </listitem>
  30. </itemizedlist>
  31. <para>
  32. Dieses spezielle Beispiel setzt ein paar Dinge voraus. Zunächst verschieben wir das meiste
  33. unseres Bootstrappings in ein Plugin. Das vereinfacht das Setup des Testfalls, da es uns
  34. erlaubt, unsere Umgebung gezielt zu definieren und die
  35. Anwendung mit einer einzigen Zeile zu starten. Außerdem setzt unser spezielles Beispiel auch
  36. voraus, dass das automatische Laden von Klassen aktiviert ist, so dass wir uns nicht um das Laden
  37. der benötigten Klassen kümmern müssen (wie die richtigen Controller, Plugins, usw).
  38. </para>
  39. <programlisting language="php"><![CDATA[
  40. class UserControllerTest extends Zend_Test_PHPUnit_ControllerTestCase
  41. {
  42. public function setUp()
  43. {
  44. $this->bootstrap = array($this, 'appBootstrap');
  45. parent::setUp();
  46. }
  47. public function appBootstrap()
  48. {
  49. $this->frontController
  50. ->registerPlugin(new Bugapp_Plugin_Initialize('development'));
  51. }
  52. public function testCallWithoutActionShouldPullFromIndexAction()
  53. {
  54. $this->dispatch('/user');
  55. $this->assertController('user');
  56. $this->assertAction('index');
  57. }
  58. public function testIndexActionShouldContainLoginForm()
  59. {
  60. $this->dispatch('/user');
  61. $this->assertAction('index');
  62. $this->assertQueryCount('form#loginForm', 1);
  63. }
  64. public function testValidLoginShouldGoToProfilePage()
  65. {
  66. $this->request->setMethod('POST')
  67. ->setPost(array(
  68. 'username' => 'foobar',
  69. 'password' => 'foobar'
  70. ));
  71. $this->dispatch('/user/login');
  72. $this->assertRedirectTo('/user/view');
  73. $this->resetRequest()
  74. ->resetResponse();
  75. $this->request->setMethod('GET')
  76. ->setPost(array());
  77. $this->dispatch('/user/view');
  78. $this->assertRoute('default');
  79. $this->assertModule('default');
  80. $this->assertController('user');
  81. $this->assertAction('view');
  82. $this->assertNotRedirect();
  83. $this->assertQuery('dl');
  84. $this->assertQueryContentContains('h2', 'User: foobar');
  85. }
  86. }
  87. ]]></programlisting>
  88. <para>
  89. Dieses Beispiel könnte auch einfacher geschrieben werden -- nicht alle der gezeigten
  90. Zusicherungen sind notwendig. Hoffentlich zeigt es, wie einfach es sein kann, die eigene
  91. Anwendung zu testen.
  92. </para>
  93. </example>
  94. <xi:include href="Zend_Test-PHPUnit-Bootstrapping.xml" />
  95. <xi:include href="Zend_Test-PHPUnit-Testing.xml" />
  96. <xi:include href="Zend_Test-PHPUnit-Assertions.xml" />
  97. <xi:include href="Zend_Test-PHPUnit-Examples.xml" />
  98. </sect1>