Большинство проектов CakePHP – это веб-приложения. Юнит-тестирование является отличным способом для проверки маленьких частей функциональности, но вы можете захотеть протестировать функциональность в большем масштабе. Класс CakeWebTestCase предоставляет хороший способ сделать это с точки зрения пользователя.
CakeWebTestCase является прямым расширением SimpleTest для случая веб-тестирования, без другой дополнительной функциональности. Все возможности, описанные в документации SimpleTest для веб-тестирования, также есть и здесь. Это также означает, что нет других возможностей, отличных от возможностей SimpleTest. Т.е., вы не сможете использовать прикрепления. И все действия во время проведения тестов, включая обновление и сохранение в базу данных, изменят значения в базе данных. Результаты тестов часто основываются на том, какие значения содержит база данных, таким образом, проверка того, что база данных содержит ожидаемые значения – является частью процедуры тестирования.
Следуя соглашениям тестирования, вы должны создавать ваши тестовые отображение в tests/cases/views. Вы, конечно, можете положить эти тесты где угодно, но следовать соглашениям – это хорошая идея. Таким образом, давайте создадим файл tests/cases/views/complete_web.test.php
Создавая веб-тесты, вы должны помнить, что ваш класс должен расширять CakeWebTestCase, а не CakeTestCase:
<? class CompleteWebTestCase extends CakeWebTestCase ?>
Если вам необходимо сделать некоторые приготовления перед началом тестирования, то создайте конструктор:
<?function CompleteWebTestCase(){
//здесь содержимое?>}
Когда вы пишите код конкретного теста, то в первую очередь вам необходимо получить некоторые выходные данные для вывода. Это можно сделать, используя get() или post(). Оба этих метода принимают полный url в качестве первого параметра. URL можно получить динамически. Допустим, скрипт теста расположен по адресу http://your.domain/cake/folder/webroot/test.php:
<?$this
->baseurl = current(split("webroot", $_SERVER['PHP_SELF']));?>
Тогда вы можете использовать get() или post() таким образом:
<?$this
->get($this->baseurl."/products/index/");$this->post($this->baseurl."/customers/login", $data);?>
Второй параметр в методе post – это $data – ассоциативный массив, содержащий post-данные в Cake формате:
<?$data
= array(
"data[Customer][mail]" => "user@user.com",
"data[Customer][password]" => "userpass");?>
Когда вы запросите страницу, то можете выполнять все виды операций на ней, используя стандартные методы веб-тестирования SimpleTest.
Дополнительную информацию читайте в документации по SimpleTest.