Skip to content

Latest commit

 

History

History
124 lines (92 loc) · 3.71 KB

functional_tests_assertions.rst

File metadata and controls

124 lines (92 loc) · 3.71 KB
.. index::
   single: Tests; Assertions

Functional Test specific Assertions

When doing functional tests, sometimes you need to make complex assertions in order to check whether the Request, the Response or the Crawler contain the expected information to make your test succeed.

The following example uses plain PHPUnit to assert that the response redirects to a certain URL:

$this->assertSame(301, $client->getResponse()->getStatusCode());
$this->assertSame('https://example.com', $client->getResponse()->headers->get('Location'));

This is the same example using the assertions provided by Symfony:

$this->assertResponseRedirects('https://example.com', 301);

Assertions Reference

Response

Note

The following assertions only work if a request has been made with the Client in a test case extending the WebTestCase class.

  • assertResponseIsSuccessful()
  • assertResponseStatusCodeSame()
  • assertResponseRedirects()
  • assertResponseHasHeader()
  • assertResponseNotHasHeader()
  • assertResponseHeaderSame()
  • assertResponseHeaderNotSame()
  • assertResponseHasCookie()
  • assertResponseNotHasCookie()
  • assertResponseCookieValueSame()
  • assertResponseFormatSame() (the response format is the value returned by the :method:`Symfony\\Component\\HttpFoundation\\Response::getFormat` method).
.. versionadded:: 5.3

    The ``assertResponseFormatSame()`` method was introduced in Symfony 5.3.

Request

Note

The following assertions only work if a request has been made with the Client in a test case extending the WebTestCase class.

  • assertRequestAttributeValueSame()
  • assertRouteSame()

Browser

Note

The following assertions only work if a request has been made with the Client in a test case extending the WebTestCase class.

  • assertBrowserHasCookie()
  • assertBrowserNotHasCookie()
  • assertBrowserCookieValueSame()

Crawler

Note

The following assertions only work if a request has been made with the Client in a test case extending the WebTestCase class. In addition, they are not available when using symfony/panther for end-to-end testing.

  • assertSelectorExists()
  • assertSelectorNotExists()
  • assertSelectorTextContains() (note: it only checks the first selector occurrence)
  • assertSelectorTextSame() (note: it only checks the first selector occurrence)
  • assertSelectorTextNotContains() (note: it only checks the first selector occurrence)
  • assertPageTitleSame()
  • assertPageTitleContains()
  • assertInputValueSame()
  • assertInputValueNotSame()
  • assertCheckboxChecked()
  • assertCheckboxNotChecked()
  • assertFormValue()
  • assertNoFormValue()
.. versionadded:: 5.2

    The ``assertCheckboxChecked()``, ``assertCheckboxNotChecked()``,
    ``assertFormValue()`` and ``assertNoFormValue()`` methods were introduced
    in Symfony 5.2.

Mailer

.. versionadded:: 5.1

    Starting from Symfony 5.1, the following assertions no longer require to make
    a request with the ``Client`` in a test case extending the ``WebTestCase`` class.

  • assertEmailCount()
  • assertQueuedEmailCount()
  • assertEmailIsQueued()
  • assertEmailIsNotQueued()
  • assertEmailAttachmentCount()
  • assertEmailTextBodyContains()
  • assertEmailTextBodyNotContains()
  • assertEmailHtmlBodyContains()
  • assertEmailHtmlBodyNotContains()
  • assertEmailHasHeader()
  • assertEmailNotHasHeader()
  • assertEmailHeaderSame()
  • assertEmailHeaderNotSame()
  • assertEmailAddressContains()