1 / 17

Functional Tests in Symfony

Functional Tests in Symfony. Sayed Ahmed B.Sc. Eng. in Computer Science & Engineering M. Sc. in Computer Science Exploring Computing for 14+ years sayed@justetc.net http://sayed.justetc.net. Functional Tests. to test your application from end to end

kalona
Télécharger la présentation

Functional Tests in Symfony

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Functional Tests in Symfony Sayed Ahmed B.Sc. Eng. in Computer Science & Engineering M. Sc. in Computer Science Exploring Computing for 14+ years sayed@justetc.net http://sayed.justetc.net

  2. Functional Tests • to test your application from end to end • from the request made by a browser to the response sent by the server • To test all the layers of an application: • the routing, • the model • the actions • and the templates • Facilitate to test use cases • Test scenarios (application usage scenarios) • Functional tests in Symfony • provide a way to easily describe scenarios • Each scenario can then be played automatically over and over again • by simulating the experience a user has in a browser

  3. Automated Testing using Selenium • http://seleniumhq.org/ • “Selenium automates browsers. That's it. What you do with that power is entirely up to you. Primarily it is for automating web applications for testing purposes, but is certainly not limited to just that. Boring web-based administration tasks can (and should!) also be automated as well.”

  4. The sfBrowserclass • sfBrowser provides methods that simulates navigation done in a classic browser: • get() Gets a URL • post() Posts to a URL • call() Calls a URL (used for PUT and DELETE methods) • back() Goes back one page in the history • forward() Goes forward one page in the history • reload() Reloads the current page • click() Clicks on a link or a button • select() selects a radiobutton or checkbox • deselect() deselects a radiobutton or checkbox • restart() Restarts the browser

  5. The sfBrowser class • setHttpHeader() Sets an HTTP header • setAuth() Sets the basic authentication credentials • setCookie() Set a cookie • removeCookie() Removes a cookie • clearCookies() Clears all current cookies • followRedirect() Follows a redirect

  6. some usage examples of the sfBrowsermethods

  7. The sfTestFunctionalclass • all tasks that generate a module automatically create a basic functional test file:

  8. The above code is equivalent to (uses: sfTestFunctional ):

  9. The Request Tester (with('request')->begin) • isParameter() Checks a request parameter value • isFormat() Checks the format of a request • isMethod() Checks the method • hasCookie() Checks whether the request has a cookie with the given name • isCookie() Checks the value of a cookie

  10. The Response Tester • checkElement() Checks if a response CSS selector match some criteria • checkForm() Checks an sfForm form object • debug() Prints the response output to ease debug • matches() Tests a response against a regexp • isHeader() Checks the value of a header • isStatusCode() Checks the response status code • isRedirected() Checks if the current response is a redirect • isValid() Checks if a response is well-formed XML (you also validate the response again its document type be passing true as an argument)

  11. Running Functional Tests • Execute the test file • $ phptest/functional/frontend/categoryActionsTest.php • Use the test:functional Task • $ phpsymfonytest:functional frontend categoryActions

  12. Test Data • include(dirname(__FILE__).'/../../bootstrap/functional.php');   • $browser = new sfTestFunctional(new sfBrowser()); • Doctrine_Core::loadData(sfConfig::get('sf_test_dir').'/fixtures');

  13. Writing Functional Tests • Writing functional tests is like playing a scenario in a browser

  14. Debugging Functional Tests • $browser->with('response')->debug(); • symfony provides the ~debug|Debug~() method to output the response header and content:

  15. Functional Tests Harness • The test:functional task can also be used to launch all functional tests for an application: • $ phpsymfonytest:functionalfrontend

  16. Tests Harness • there is also a task to launch all tests for a project (unit and functional): • $ phpsymfonytest:all

  17. References • http://www.symfony-project.org/jobeet/1_4/Doctrine/en/09

More Related