CakePHP: Manual/CommonTasks/Testing/TestingViews

Web тестирование – Тестирование отображений

Большинство проектов CakePHP – это веб-приложения. Юнит-тестирование является отличным способом для проверки маленьких частей функциональности, но вы можете захотеть протестировать функциональность в большем масштабе. Класс CakeWebTestCase предоставляет хороший способ сделать это с точки зрения пользователя.


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.

<< Тестирование компонентов | Тестирование плагинов >>