Zend_Test-PHPUnit.xml 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 15157 -->
  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> bietet einen TestCase, für MVC Anwendungen die Ausnahmen enthalten,
  8. für das Testen einer Vielzahl an Möglichkeiten. Der warscheinlich einfachste Weg um zu verstehen was
  9. das ist, ist das ansehen des folgenden Beispiels.
  10. </para>
  11. <example id="zend.test.phpunit.loginexample">
  12. <title>Beispiel eines TestCases für ein Anwendungs Login</title>
  13. <para>
  14. Das folgende ist ein einfacher TestCase für einen <code>UserController</code> um verschiedene
  15. Dinge zu prüfen:
  16. </para>
  17. <itemizedlist>
  18. <listitem><para>
  19. Die Login Form sollte nicht-authenthifizierten Benutzern angezeigt werden.
  20. </para></listitem>
  21. <listitem><para>
  22. Wenn sich ein Benutzer einloggt, sollte er zu seiner Profilseite umgeleitet werden, und diese
  23. Profilseite sollte relevante Informationen enthalten.
  24. </para></listitem>
  25. </itemizedlist>
  26. <para>
  27. Dieses spezielle Beispiel nimmt ein paar Dinge an. Erstens schieben wird das meiste unseres
  28. Bootstrappings in ein Plugin. Das vereinfacht das Setup des TestCases da es uns erlaubt unsere
  29. Umgebung geziehlt zu spezifizieren, und es uns ausserdem erlaubt die Anwendung in einer einzigen
  30. Zeile zu starten. Unser spezielles Beispiel nimmt auch an das das Setup automatisch lädt sodas wir
  31. uns nicht um das laden der betreffenden Klassen kümmern müssen (wie die richtigen Kontroller,
  32. Plugins, usw).
  33. </para>
  34. <programlisting role="php"><![CDATA[
  35. class UserControllerTest extends Zend_Test_PHPUnit_ControllerTestCase
  36. {
  37. public function setUp()
  38. {
  39. $this->bootstrap = array($this, 'appBootstrap');
  40. parent::setUp();
  41. }
  42. public function appBootstrap()
  43. {
  44. $this->frontController
  45. ->registerPlugin(new Bugapp_Plugin_Initialize('development'));
  46. }
  47. public function testCallWithoutActionShouldPullFromIndexAction()
  48. {
  49. $this->dispatch('/user');
  50. $this->assertController('user');
  51. $this->assertAction('index');
  52. }
  53. public function testIndexActionShouldContainLoginForm()
  54. {
  55. $this->dispatch('/user');
  56. $this->assertAction('index');
  57. $this->assertQueryCount('form#loginForm', 1);
  58. }
  59. public function testValidLoginShouldGoToProfilePage()
  60. {
  61. $this->request->setMethod('POST')
  62. ->setPost(array(
  63. 'username' => 'foobar',
  64. 'password' => 'foobar'
  65. ));
  66. $this->dispatch('/user/login');
  67. $this->assertRedirectTo('/user/view');
  68. $this->resetRequest()
  69. ->resetResponse();
  70. $this->request->setMethod('GET')
  71. ->setPost(array());
  72. $this->dispatch('/user/view');
  73. $this->assertRoute('default');
  74. $this->assertModule('default');
  75. $this->assertController('user');
  76. $this->assertAction('view');
  77. $this->assertNotRedirect();
  78. $this->assertQuery('dl');
  79. $this->assertQueryContentContains('h2', 'User: foobar');
  80. }
  81. }
  82. ]]></programlisting>
  83. <para>
  84. Dieses Beispiel können auch einfacher geschrieben werden -- nicht alle der gezeigten Ausnahmen
  85. sind notwendig. Hoffentlich zeigt es wie einfach es ist die eigene Anwendung zu testen.
  86. This example could be written somewhat simpler -- not all the
  87. assertions shown are necessary, and are provided for illustration
  88. purposes only. Hopefully, it shows how simple it can be to test
  89. your applications.
  90. </para>
  91. </example>
  92. <xi:include href="Zend_Test-PHPUnit-Bootstrapping.xml" />
  93. <xi:include href="Zend_Test-PHPUnit-Testing.xml" />
  94. <xi:include href="Zend_Test-PHPUnit-Assertions.xml" />
  95. <xi:include href="Zend_Test-PHPUnit-Examples.xml" />
  96. </sect1>
  97. <!--
  98. vim:se ts=4 sw=4 et:
  99. -->