Zend_Test-PHPUnit.xml 4.0 KB

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