silverstripe-framework/docs/en/02_Developer_Guides/06_Testing/01_Functional_Testing.md
Aaron Carlino 6888901468
NEW: Update docs to be compliant with Gatsby site (#9314)
* First cut

* Temporarily disable composer.json for netlify build

* POC

* New recursive directory query, various refinements

* Fix flexbox

* new styled components plugin

* Apply frontmatter delimiters

* Mobile styles, animation

* Search

* Redesign, clean up

* Nuke the cache, try again

* fix file casing

* Remove production env file

* ID headers

* Move app to new repo

* Add frontmatter universally

* Hide children changelogs

* Add how to title

* New callout tags

* Revert inline code block change

* Replace note callouts

* Fix icons

* Repalce images

* Fix icon

* Fix image links

* Use proper SQL icon
2019-11-18 17:58:33 +13:00

3.6 KiB

title summary
Functional Testing Test controllers, forms and HTTP responses.

Functional Testing

FunctionalTest test your applications Controller logic and anything else which requires a web request. The core idea of these tests is the same as SapphireTest unit tests but FunctionalTest adds several methods for creating HTTPRequest, receiving HTTPResponse objects and modifying the current user session.

Get

$page = $this->get($url);

Performs a GET request on $url and retrieves the HTTPResponse. This also changes the current page to the value of the response.

Post

$page = $this->post($url);

Performs a POST request on $url and retrieves the HTTPResponse. This also changes the current page to the value of the response.

Submit

$submit = $this->submitForm($formID, $button = null, $data = []);

Submits the given form (#ContactForm) on the current page and returns the HTTPResponse.

LogInAs

$this->logInAs($member);

Logs a given user in, sets the current session. To log all users out pass null to the method.

$this->logInAs(null);

Assertions

The FunctionalTest class also provides additional asserts to validate your tests.

assertPartialMatchBySelector

$this->assertPartialMatchBySelector('p.good',[
    'Test save was successful'
]);

Asserts that the most recently queried page contains a number of content tags specified by a CSS selector. The given CSS selector will be applied to the HTML of the most recent page. The content of every matching tag will be examined. The assertion fails if one of the expectedMatches fails to appear.

assertExactMatchBySelector

$this->assertExactMatchBySelector("#MyForm_ID p.error", [
    "That email address is invalid."
]);

Asserts that the most recently queried page contains a number of content tags specified by a CSS selector. The given CSS selector will be applied to the HTML of the most recent page. The full HTML of every matching tag will be examined. The assertion fails if one of the expectedMatches fails to appear.

assertPartialHTMLMatchBySelector

$this->assertPartialHTMLMatchBySelector("#MyForm_ID p.error", [
    "That email address is invalid."
]);

Assert that the most recently queried page contains a number of content tags specified by a CSS selector. The given CSS selector will be applied to the HTML of the most recent page. The content of every matching tag will be examined. The assertion fails if one of the expectedMatches fails to appear.

[notice]   characters are stripped from the content; make sure that your assertions take this into account. [/notice]

assertExactHTMLMatchBySelector

$this->assertExactHTMLMatchBySelector("#MyForm_ID p.error", [
    "That email address is invalid."
]);

Assert that the most recently queried page contains a number of content tags specified by a CSS selector. The given CSS selector will be applied to the HTML of the most recent page. The full HTML of every matching tag will be examined. The assertion fails if one of the expectedMatches fails to appear.

[notice]   characters are stripped from the content; make sure that your assertions take this into account. [/notice]

API Documentation