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.

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