Test-Driven Developmentmit TYPO3Oliver Klee, 8.-9.4.2011
Unit-Tests?
Manuelles Testen ist mühsam
AutomatisierteTests sindschnell
Unit-Tests für dieRealty-Manager-   Extension
mehr als1600 Tests
in weniger als 60 Sekunden
Sicher sein, dass derCode das Richtige tut
Verhindern, dass deineÄnderungen etwas anderes           kaputt machen
Verhindern,         dass andere Leutedeinen Code kaputtmachen
Auch bei komplexen Projekten         nichts kaputt machen
Baue ein   Sicherheitsnetz            fürs Refactoring
Grün fühlt sich   gut                   an!
Grün fühlt sich   gut                   an!
Kenne    deineWerkzeuge
Die phpunit-Extensionbringt alles Wichtige mit
Die phpunit-Extensionbringt alles Wichtige mitphpunit (TYPO3-Extension)
Die phpunit-Extensionbringt alles Wichtige mitphpunit (TYPO3-Extension)  PHPUnit (PEAR-Paket)
Die phpunit-Extensionbringt alles Wichtige mitphpunit (TYPO3-Extension)  PHPUnit (PEAR-Paket) Testrunner (Back-end-   Modul)
Die phpunit-Extensionbringt alles Wichtige mitphpunit (TYPO3-Extension)  PHPUnit (PEAR-Paket) Testrunner      Testrunner (...
Die phpunit-Extensionbringt alles Wichtige mitphpunit (TYPO3-Extension)  PHPUnit (PEAR-Paket)  Testing-Framework für FE & ...
Treffen sichzwei Tests ...
Test   Treffen sich       zwei Tests ...
Test      Treffen sichAssertion   zwei Tests ...
Test      Treffen sichAssertion   zwei Tests ...  Test  Test
Test      Treffen sichAssertion   zwei Tests ...  Test  TestTestcase
Test      Treffen sichAssertion   zwei Tests ...  Test  TestTestcaseTestcase
Test       Treffen sichAssertion    zwei Tests ...  Test  TestTestcaseTestcase Testsuite
Schreibe   zuerst   den   Test
Schreibe   zuerst   den   Test
Schreibe   zuerst   den   Test        Test     schreiben
Schreibe   zuerst   den   Test        Test     schreiben
Schreibe   zuerst   den   Test        Test       Code     schreiben   schreiben
Schreibe   zuerst   den   Test        Test       Code     schreiben   schreiben
Schreibe   zuerst   den   Test        Test       Code     schreiben   schreiben
Schreibe   zuerst   den   Test        Test       Code     schreiben   schreiben                             refactoren
Schreibe   zuerst   den   Test        Test       Code     schreiben   schreiben                             refactoren
Es gibtkleine und große              Tests
Unit-Tests sind    klein und schnell
Integrationstests testen      das große Ganze
Automatisierte Klick-Tests testen die Außenansicht
Automatisierte Klick-Tests testen die Außenansicht                  Selenium
Blackbox-Tests      testen         das   nach außen Sichtbare
Whitebox-Tests    testen                  wie genau es        innen funktioniert
ContinuousIntegration
ContinuousIntegration    =
ContinuousIntegration     = öfter maleinchecken
Der Continuous-Integration-Server               überwacht den Code     Checkin                            Repository (SVN)
Der Continuous-Integration-Server               überwacht den Code     Checkin                    k                -Hoo   ...
Der Continuous-Integration-Server                überwacht den Code     Checkin                      k                  -H...
Der Continuous-Integration-Server                überwacht den Code     Checkin                       k                   ...
Der Continuous-Integration-Server                überwacht den Code     Checkin                       k                   ...
Der Continuous-Integration-Server                überwacht den Code     Checkin                       k                   ...
Extreme Programming(XP)
Extreme Programming(XP)       ständige          Integration
Extreme Programming(XP)       ständige kurze           Integration   Iterationen
Extreme Programming(XP)       ständige kurze           Integration    Iterationen                         Test-Driven     ...
Extreme Programming(XP)       ständige kurze           Integration    Iterationen                         Test-Driven     ...
Extreme Programming(XP)       ständige kurze               Integration    Iterationen     Pair                    Test-Dri...
Extreme Programming(XP)       ständige kurze                Integration    Iterationen     Pair                     Test-D...
Extreme Programming(XP)       ständige kurze                Integration    Iterationen     Pair                     Test-D...
Extreme Programming(XP)       ständige kurze                Integration    Iterationen     Pair                     Test-D...
Extreme Programming(XP)       ständige kurze                Integration    Iterationen     Pair                     Test-D...
Extreme Programming(XP)       ständige kurze                 Integration     Iterationen     Pair                       Te...
Extreme Programming(XP)       ständige kurze                 Integration     Iterationen     Pair                       Te...
Das   Testing-Framework                 ist schnell gebaut	   /**	    * @var Tx_Phpunit_Framework	    */	   protected $tes...
Das   Testing-Framework                 ist schnell gebaut	   /**	    * @var Tx_Phpunit_Framework	    */	   protected $tes...
Das   Testing-Framework                 ist schnell gebaut	   /**	    * @var Tx_Phpunit_Framework	    */	   protected $tes...
Das   Testing-Framework alles faken                   kann (fast)
Das   Testing-Framework alles faken                   kann (fast)        $recordUid = $tf->createRecord($tableName, array ...
Das   Testing-Framework alles faken                   kann (fast)        $recordUid = $tf->createRecord($tableName, array ...
Das   Testing-Framework alles faken                   kann (fast)        $recordUid = $tf->createRecord($tableName, array ...
Das   Testing-Framework alles faken                   kann (fast)            $recordUid = $tf->createRecord($tableName, ar...
Das   Testing-Framework alles faken                   kann (fast)            $recordUid = $tf->createRecord($tableName, ar...
Das   Testing-Framework alles faken                   kann (fast)            $recordUid = $tf->createRecord($tableName, ar...
Das   Testing-Framework alles faken                   kann (fast)            $recordUid = $tf->createRecord($tableName, ar...
Das   Testing-Framework alles faken                   kann (fast)            $recordUid = $tf->createRecord($tableName, ar...
Das   Testing-Framework alles faken                   kann (fast)            $recordUid = $tf->createRecord($tableName, ar...
Das   Testing-Framework alles faken                   kann (fast)             $recordUid = $tf->createRecord($tableName, a...
Das   Testing-Framework alles faken                   kann (fast)
Das   Testing-Framework alles faken                   kann (fast)           $recordUid = $tf->createBackEndUser(array $rec...
Das   Testing-Framework alles faken                   kann (fast)              $recordUid = $tf->createBackEndUser(array $...
Das   Testing-Framework alles faken                   kann (fast)              $recordUid = $tf->createBackEndUser(array $...
Das   Testing-Framework alles faken                   kann (fast)                    $recordUid = $tf->createBackEndUser(a...
Das   Testing-Framework alles faken                   kann (fast)                    $recordUid = $tf->createBackEndUser(a...
Das   Testing-Framework alles faken                   kann (fast)
Das   Testing-Framework alles faken                   kann (fast)          $path = $tf->createDummyFile($fileName = test.t...
Das   Testing-Framework alles faken                    kann (fast)                    $path = $tf->createDummyFile($fileNa...
Das   Testing-Framework alles faken                    kann (fast)                    $path = $tf->createDummyFile($fileNa...
Das   Testing-Framework alles faken                    kann (fast)                    $path = $tf->createDummyFile($fileNa...
Das   Testing-Framework alles faken                    kann (fast)                    $path = $tf->createDummyFile($fileNa...
Das   Testing-Framework alles faken                   kann (fast)
Das   Testing-Framework alles faken                   kann (fast)                 $pageUid = $tf->createFakeFrontEnd($page...
Das   Testing-Framework alles faken                   kann (fast)                 $pageUid = $tf->createFakeFrontEnd($page...
Das   Testing-Framework alles faken                   kann (fast)                 $pageUid = $tf->createFakeFrontEnd($page...
Das   Testing-Framework alles faken                   kann (fast)                 $pageUid = $tf->createFakeFrontEnd($page...
Das   Testing-Framework alles faken                   kann (fast)                 $pageUid = $tf->createFakeFrontEnd($page...
Das   Testing-Framework alles faken                   kann (fast)                             $pageUid = $tf->createFakeFr...
Das   Testing-Framework alles faken                   kann (fast)                             $pageUid = $tf->createFakeFr...
Das   Testing-Framework alles faken                   kann (fast)                             $pageUid = $tf->createFakeFr...
Das   Testing-Framework alles faken                   kann (fast)                              $pageUid = $tf->createFakeF...
Upcoming SlideShare
Loading in...5
×

Test-driven Development mit TYPO3

796

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
796
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Transcript of "Test-driven Development mit TYPO3"

    1. 1. Test-Driven Developmentmit TYPO3Oliver Klee, 8.-9.4.2011
    2. 2. Unit-Tests?
    3. 3. Manuelles Testen ist mühsam
    4. 4. AutomatisierteTests sindschnell
    5. 5. Unit-Tests für dieRealty-Manager- Extension
    6. 6. mehr als1600 Tests
    7. 7. in weniger als 60 Sekunden
    8. 8. Sicher sein, dass derCode das Richtige tut
    9. 9. Verhindern, dass deineÄnderungen etwas anderes kaputt machen
    10. 10. Verhindern, dass andere Leutedeinen Code kaputtmachen
    11. 11. Auch bei komplexen Projekten nichts kaputt machen
    12. 12. Baue ein Sicherheitsnetz fürs Refactoring
    13. 13. Grün fühlt sich gut an!
    14. 14. Grün fühlt sich gut an!
    15. 15. Kenne deineWerkzeuge
    16. 16. Die phpunit-Extensionbringt alles Wichtige mit
    17. 17. Die phpunit-Extensionbringt alles Wichtige mitphpunit (TYPO3-Extension)
    18. 18. Die phpunit-Extensionbringt alles Wichtige mitphpunit (TYPO3-Extension) PHPUnit (PEAR-Paket)
    19. 19. Die phpunit-Extensionbringt alles Wichtige mitphpunit (TYPO3-Extension) PHPUnit (PEAR-Paket) Testrunner (Back-end- Modul)
    20. 20. Die phpunit-Extensionbringt alles Wichtige mitphpunit (TYPO3-Extension) PHPUnit (PEAR-Paket) Testrunner Testrunner (Back-end- (Kommandozeilen- Modul) Modul)
    21. 21. Die phpunit-Extensionbringt alles Wichtige mitphpunit (TYPO3-Extension) PHPUnit (PEAR-Paket) Testing-Framework für FE & DB Testrunner Testrunner (Back-end- (Kommandozeilen- Modul) Modul)
    22. 22. Treffen sichzwei Tests ...
    23. 23. Test Treffen sich zwei Tests ...
    24. 24. Test Treffen sichAssertion zwei Tests ...
    25. 25. Test Treffen sichAssertion zwei Tests ... Test Test
    26. 26. Test Treffen sichAssertion zwei Tests ... Test TestTestcase
    27. 27. Test Treffen sichAssertion zwei Tests ... Test TestTestcaseTestcase
    28. 28. Test Treffen sichAssertion zwei Tests ... Test TestTestcaseTestcase Testsuite
    29. 29. Schreibe zuerst den Test
    30. 30. Schreibe zuerst den Test
    31. 31. Schreibe zuerst den Test Test schreiben
    32. 32. Schreibe zuerst den Test Test schreiben
    33. 33. Schreibe zuerst den Test Test Code schreiben schreiben
    34. 34. Schreibe zuerst den Test Test Code schreiben schreiben
    35. 35. Schreibe zuerst den Test Test Code schreiben schreiben
    36. 36. Schreibe zuerst den Test Test Code schreiben schreiben refactoren
    37. 37. Schreibe zuerst den Test Test Code schreiben schreiben refactoren
    38. 38. Es gibtkleine und große Tests
    39. 39. Unit-Tests sind klein und schnell
    40. 40. Integrationstests testen das große Ganze
    41. 41. Automatisierte Klick-Tests testen die Außenansicht
    42. 42. Automatisierte Klick-Tests testen die Außenansicht Selenium
    43. 43. Blackbox-Tests testen das nach außen Sichtbare
    44. 44. Whitebox-Tests testen wie genau es innen funktioniert
    45. 45. ContinuousIntegration
    46. 46. ContinuousIntegration =
    47. 47. ContinuousIntegration = öfter maleinchecken
    48. 48. Der Continuous-Integration-Server überwacht den Code Checkin Repository (SVN)
    49. 49. Der Continuous-Integration-Server überwacht den Code Checkin k -Hoo Repository (SVN) SVN
    50. 50. Der Continuous-Integration-Server überwacht den Code Checkin k -Hoo Repository (SVN) SVN Continuous-Integration- Server
    51. 51. Der Continuous-Integration-Server überwacht den Code Checkin k -Hoo Repository (SVN) SVN Hey, eine Änderung! Continuous-Integration- Server
    52. 52. Der Continuous-Integration-Server überwacht den Code Checkin k -Hoo Repository (SVN) SVN Hey, eine Änderung! Continuous-Integration- Unit-Tests Server laufen lassen
    53. 53. Der Continuous-Integration-Server überwacht den Code Checkin k -Hoo Repository (SVN) SVN Hey, eine Änderung! Continuous-Integration- Unit-Tests Bericht Server laufen lassen
    54. 54. Extreme Programming(XP)
    55. 55. Extreme Programming(XP) ständige Integration
    56. 56. Extreme Programming(XP) ständige kurze Integration Iterationen
    57. 57. Extreme Programming(XP) ständige kurze Integration Iterationen Test-Driven Development
    58. 58. Extreme Programming(XP) ständige kurze Integration Iterationen Test-Driven Refactoring Development
    59. 59. Extreme Programming(XP) ständige kurze Integration Iterationen Pair Test-Driven Refactoring Programming Development
    60. 60. Extreme Programming(XP) ständige kurze Integration Iterationen Pair Test-Driven Refactoring Programming Development kollektives Eigentum
    61. 61. Extreme Programming(XP) ständige kurze Integration Iterationen Pair Test-Driven Refactoring Programming Development kollektives Coding- Eigentum Standards
    62. 62. Extreme Programming(XP) ständige kurze Integration Iterationen Pair Test-Driven Refactoring Programming Development kollektives Coding- einfaches Eigentum Standards Design
    63. 63. Extreme Programming(XP) ständige kurze Integration Iterationen Pair Test-Driven Refactoring Programming Development kollektives Coding- einfaches Eigentum Standards Design keine Überstunden
    64. 64. Extreme Programming(XP) ständige kurze Integration Iterationen Pair Test-Driven Refactoring Programming Development kollektives Coding- einfaches Eigentum Standards Design keine Planning Game Überstunden
    65. 65. Extreme Programming(XP) ständige kurze Integration Iterationen Pair Test-Driven Refactoring Programming Development kollektives Coding- einfaches Eigentum Standards Design Kunden keine Planning Game einbeziehen Überstunden
    66. 66. Das Testing-Framework ist schnell gebaut /** * @var Tx_Phpunit_Framework */ protected $testingFramework; public function setUp() { $this->testingFramework = new Tx_Phpunit_Framework(tx_news2); } public function tearDown() { $this->testingFramework->cleanUp(); unset($this->testingFramework); }
    67. 67. Das Testing-Framework ist schnell gebaut /** * @var Tx_Phpunit_Framework */ protected $testingFramework; public function setUp() { $this->testingFramework = new Tx_Phpunit_Framework(tx_news2); } FE beseitigen, public function tearDown() { Datensätze löschen, $this->testingFramework->cleanUp(); unset($this->testingFramework); Dateien löschen }
    68. 68. Das Testing-Framework ist schnell gebaut /** * @var Tx_Phpunit_Framework */ protected $testingFramework; public function setUp() { $this->testingFramework = new Tx_Phpunit_Framework(tx_news2); } FE beseitigen, public function tearDown() { Datensätze löschen, $this->testingFramework->cleanUp(); unset($this->testingFramework); Dateien löschen }CREATE TABLE tx_news2_domain_model_news ( … is_dummy_record tinyint(1) unsigned DEFAULT 0 NOT NULL, …
    69. 69. Das Testing-Framework alles faken kann (fast)
    70. 70. Das Testing-Framework alles faken kann (fast) $recordUid = $tf->createRecord($tableName, array $recordData = array());
    71. 71. Das Testing-Framework alles faken kann (fast) $recordUid = $tf->createRecord($tableName, array $recordData = array()); $tf->changeRecord($tableName, $uid, array $recordData);
    72. 72. Das Testing-Framework alles faken kann (fast) $recordUid = $tf->createRecord($tableName, array $recordData = array()); $tf->changeRecord($tableName, $uid, array $recordData); $tf->deleteRecord($tableName, $uid);
    73. 73. Das Testing-Framework alles faken kann (fast) $recordUid = $tf->createRecord($tableName, array $recordData = array()); $tf->changeRecord($tableName, $uid, array $recordData); $tf->deleteRecord($tableName, $uid); $pageUid = $tf->createFrontEndPage($parentId = 0, array $recordData = array());
    74. 74. Das Testing-Framework alles faken kann (fast) $recordUid = $tf->createRecord($tableName, array $recordData = array()); $tf->changeRecord($tableName, $uid, array $recordData); $tf->deleteRecord($tableName, $uid); $pageUid = $tf->createFrontEndPage($parentId = 0, array $recordData = array()); $pageUid = $tf->createSystemFolder($parentId = 0, array $recordData = array());
    75. 75. Das Testing-Framework alles faken kann (fast) $recordUid = $tf->createRecord($tableName, array $recordData = array()); $tf->changeRecord($tableName, $uid, array $recordData); $tf->deleteRecord($tableName, $uid); $pageUid = $tf->createFrontEndPage($parentId = 0, array $recordData = array()); $pageUid = $tf->createSystemFolder($parentId = 0, array $recordData = array()); $elementUid = $tf->createContentElement($pageId = 0, array $recordData = array());
    76. 76. Das Testing-Framework alles faken kann (fast) $recordUid = $tf->createRecord($tableName, array $recordData = array()); $tf->changeRecord($tableName, $uid, array $recordData); $tf->deleteRecord($tableName, $uid); $pageUid = $tf->createFrontEndPage($parentId = 0, array $recordData = array()); $pageUid = $tf->createSystemFolder($parentId = 0, array $recordData = array()); $elementUid = $tf->createContentElement($pageId = 0, array $recordData = array()); $tf->createTemplate($pageId, array $recordData = array());
    77. 77. Das Testing-Framework alles faken kann (fast) $recordUid = $tf->createRecord($tableName, array $recordData = array()); $tf->changeRecord($tableName, $uid, array $recordData); $tf->deleteRecord($tableName, $uid); $pageUid = $tf->createFrontEndPage($parentId = 0, array $recordData = array()); $pageUid = $tf->createSystemFolder($parentId = 0, array $recordData = array()); $elementUid = $tf->createContentElement($pageId = 0, array $recordData = array()); $tf->createTemplate($pageId, array $recordData = array()); $groupUid = $tf->createFrontEndUserGroup(array $recordData = array());
    78. 78. Das Testing-Framework alles faken kann (fast) $recordUid = $tf->createRecord($tableName, array $recordData = array()); $tf->changeRecord($tableName, $uid, array $recordData); $tf->deleteRecord($tableName, $uid); $pageUid = $tf->createFrontEndPage($parentId = 0, array $recordData = array()); $pageUid = $tf->createSystemFolder($parentId = 0, array $recordData = array()); $elementUid = $tf->createContentElement($pageId = 0, array $recordData = array()); $tf->createTemplate($pageId, array $recordData = array()); $groupUid = $tf->createFrontEndUserGroup(array $recordData = array()); $userUid = $tf->createFrontEndUser($groups = , array $recordData = array());
    79. 79. Das Testing-Framework alles faken kann (fast) $recordUid = $tf->createRecord($tableName, array $recordData = array()); $tf->changeRecord($tableName, $uid, array $recordData); $tf->deleteRecord($tableName, $uid); $pageUid = $tf->createFrontEndPage($parentId = 0, array $recordData = array()); $pageUid = $tf->createSystemFolder($parentId = 0, array $recordData = array()); $elementUid = $tf->createContentElement($pageId = 0, array $recordData = array()); $tf->createTemplate($pageId, array $recordData = array()); $groupUid = $tf->createFrontEndUserGroup(array $recordData = array()); $userUid = $tf->createFrontEndUser($groups = , array $recordData = array());$userUid = $tf->createAndLoginFrontEndUser($groups = , array $recordData = array());
    80. 80. Das Testing-Framework alles faken kann (fast)
    81. 81. Das Testing-Framework alles faken kann (fast) $recordUid = $tf->createBackEndUser(array $recordData = array());
    82. 82. Das Testing-Framework alles faken kann (fast) $recordUid = $tf->createBackEndUser(array $recordData = array()); $recordUid = $tf->createBackEndUserGroup(array $recordData = array());
    83. 83. Das Testing-Framework alles faken kann (fast) $recordUid = $tf->createBackEndUser(array $recordData = array()); $recordUid = $tf->createBackEndUserGroup(array $recordData = array()); $tf->createRelation($tableName, $uidLocal, $uidForeign, $sorting = 0);
    84. 84. Das Testing-Framework alles faken kann (fast) $recordUid = $tf->createBackEndUser(array $recordData = array()); $recordUid = $tf->createBackEndUserGroup(array $recordData = array()); $tf->createRelation($tableName, $uidLocal, $uidForeign, $sorting = 0);$tf->createRelationAndUpdateCounter($tableName, $uidLocal, $uidForeign, $columnName);
    85. 85. Das Testing-Framework alles faken kann (fast) $recordUid = $tf->createBackEndUser(array $recordData = array()); $recordUid = $tf->createBackEndUserGroup(array $recordData = array()); $tf->createRelation($tableName, $uidLocal, $uidForeign, $sorting = 0);$tf->createRelationAndUpdateCounter($tableName, $uidLocal, $uidForeign, $columnName); $tf->removeRelation($tableName, $uidLocal, $uidForeign);
    86. 86. Das Testing-Framework alles faken kann (fast)
    87. 87. Das Testing-Framework alles faken kann (fast) $path = $tf->createDummyFile($fileName = test.txt, $content = );
    88. 88. Das Testing-Framework alles faken kann (fast) $path = $tf->createDummyFile($fileName = test.txt, $content = );$path = $tf->createDummyZipArchive($fileName = test.zip, array $filesToAdd = array());
    89. 89. Das Testing-Framework alles faken kann (fast) $path = $tf->createDummyFile($fileName = test.txt, $content = );$path = $tf->createDummyZipArchive($fileName = test.zip, array $filesToAdd = array()); $tf->deleteDummyFile($fileName);
    90. 90. Das Testing-Framework alles faken kann (fast) $path = $tf->createDummyFile($fileName = test.txt, $content = );$path = $tf->createDummyZipArchive($fileName = test.zip, array $filesToAdd = array()); $tf->deleteDummyFile($fileName); $tf->deleteDummyFolder($folderName);
    91. 91. Das Testing-Framework alles faken kann (fast) $path = $tf->createDummyFile($fileName = test.txt, $content = );$path = $tf->createDummyZipArchive($fileName = test.zip, array $filesToAdd = array()); $tf->deleteDummyFile($fileName); $path = $tf->createDummyFolder($folderName); $tf->deleteDummyFolder($folderName);
    92. 92. Das Testing-Framework alles faken kann (fast)
    93. 93. Das Testing-Framework alles faken kann (fast) $pageUid = $tf->createFakeFrontEnd($pageUid = 0);
    94. 94. Das Testing-Framework alles faken kann (fast) $pageUid = $tf->createFakeFrontEnd($pageUid = 0); $tf->discardFakeFrontEnd();
    95. 95. Das Testing-Framework alles faken kann (fast) $pageUid = $tf->createFakeFrontEnd($pageUid = 0); $tf->discardFakeFrontEnd(); $tf->loginFrontEndUser($userId);
    96. 96. Das Testing-Framework alles faken kann (fast) $pageUid = $tf->createFakeFrontEnd($pageUid = 0); $tf->discardFakeFrontEnd(); $tf->loginFrontEndUser($userId); $tf->logoutFrontEndUser();
    97. 97. Das Testing-Framework alles faken kann (fast) $pageUid = $tf->createFakeFrontEnd($pageUid = 0); $tf->discardFakeFrontEnd(); $tf->loginFrontEndUser($userId); $tf->logoutFrontEndUser(); $isLoggedIn = $tf->isLoggedIn();
    98. 98. Das Testing-Framework alles faken kann (fast) $pageUid = $tf->createFakeFrontEnd($pageUid = 0); $tf->discardFakeFrontEnd(); $tf->loginFrontEndUser($userId); $tf->logoutFrontEndUser(); $isLoggedIn = $tf->isLoggedIn(); $numberOfRecords = $tf->countRecords($tableName, $whereClause = );
    99. 99. Das Testing-Framework alles faken kann (fast) $pageUid = $tf->createFakeFrontEnd($pageUid = 0); $tf->discardFakeFrontEnd(); $tf->loginFrontEndUser($userId); $tf->logoutFrontEndUser(); $isLoggedIn = $tf->isLoggedIn(); $numberOfRecords = $tf->countRecords($tableName, $whereClause = ); $success = $tf->existsRecord($tableName, $whereClause = );
    100. 100. Das Testing-Framework alles faken kann (fast) $pageUid = $tf->createFakeFrontEnd($pageUid = 0); $tf->discardFakeFrontEnd(); $tf->loginFrontEndUser($userId); $tf->logoutFrontEndUser(); $isLoggedIn = $tf->isLoggedIn(); $numberOfRecords = $tf->countRecords($tableName, $whereClause = ); $success = $tf->existsRecord($tableName, $whereClause = ); $success = $tf->existsRecordWithUid($tableName, $uid);
    101. 101. Das Testing-Framework alles faken kann (fast) $pageUid = $tf->createFakeFrontEnd($pageUid = 0); $tf->discardFakeFrontEnd(); $tf->loginFrontEndUser($userId); $tf->logoutFrontEndUser(); $isLoggedIn = $tf->isLoggedIn(); $numberOfRecords = $tf->countRecords($tableName, $whereClause = ); $success = $tf->existsRecord($tableName, $whereClause = ); $success = $tf->existsRecordWithUid($tableName, $uid); $success = $tf->existsExactlyOneRecord($tableName, $whereClause = );

    ×