Создаём Unit тесты при помощи Zend_Test_PHPUnit_ControllerTestCase
В этом уроке я покажу вам как создавать тесты на примере приложения TodoIt.
Настройка PHPUnit
Всё, что вам надо так это папка /tests. Инструмент ZF cli создаст файл phpunit.xml, но он будет пустым! Вот, что нужно туда добавить:
<phpunit colors="true" bootstrap="./TestHelper.php"> <testsuite name="TodoIt Test Suite"> <directory>./</directory> </testsuite> <filter> <whitelist> <directory suffix=".php">../library/</directory> <directory suffix=".php">../application/</directory> <exclude> <directory suffix=".phtml">../application/</directory> </exclude> </whitelist> </filter> <logging> <log highlowerbound="80" lowupperbound="50" highlight="true" yui="true" charset="UTF-8" target="./log/report" type="coverage-html"></log> </logging> </phpunit>
Этот файл используется для конфигурации phpunit. Поскольку это XML, то его очень просто прочитать. Так же нам надо создать TestHelper.php, который будет использоваться как bootstrap. В общем, содержание данного файла очень схоже с index.php. TestHelper.php выглядит следующим образом:
<?php error_reporting(E_ALL | E_STRICT); date_default_timezone_set('Europe/London'); define('APPLICATION_ENV', 'unittesting'); define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application')); $root = realpath(dirname(__FILE__) . '/../'); $library = $root . '/library'; $models = $root . '/application/models'; $path = array( $library, $models, get_include_path() ); set_include_path(implode(PATH_SEPARATOR, $path)); require_once 'Zend/Loader/Autoloader.php'; Zend_Loader_Autoloader::getInstance(); // чистим за собой unset($root, $library, $models, $path);
Теперь мы готовы к написанию тестов.
Класс тестов
Расположите тесты в каталоге tests/application/controllers для того, чтобы быстро их найти. (Тесты для моделей в tests/application/models и т.д.). Начнём с тестирования AuthController::indexAction(). В первую очередь проверим наличие формы.
Сам AuthControllerTest будет находиться в tests/application/controllers/AuthControllerTest.php:
<?php if (!defined("PHPUnit_MAIN_METHOD")) { define("PHPUnit_MAIN_METHOD", "AuthControllerTest::main"); } require_once 'PHPUnit/Framework/TestCase.php'; /** * @group Controllers */ class AuthControllerTest extends Zend_Test_PHPUnit_ControllerTestCase { public static function main() { $suite = new PHPUnit_Framework_TestSuite(get_class($this)); $result = PHPUnit_TextUI_TestRunner::run($suite); } public function setUp() { $application = new Zend_Application( APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini' ); $this->bootstrap = $application; return parent::setUp(); } public function tearDown() { /* Tear Down Routine */ } public function testLoginDisplaysAForm() { $this->dispatch('/auth/index'); $this->assertQueryContentContains('h1', 'Login'); $this->assertQuery('form#login'); // id of form } }
В первую очередь мы должны убедиться в том, что можем запускать PHPUnit тесты из командной строки:
phpunit tests\application\controllers\AuthControllerTest.php
Мы можем это делать благодаря константе PHPUnit_MAIN_METHOD статического метода AuthControllerTest::main(). Инструмент phpunit cli запустит метод, который активирует тесты.
Методы setUp() и tearDown() запускаются до и после теста. Так как мы наследуем от Zend_Test_PHPUnit_ControllerTestCase то можем использовать специальные методы. Их мы используем в setUp().
Каждый тест должен начинаться с ключевого слова test:
public function testLoginDisplaysAForm() { $this->dispatch('/auth/index'); $this->assertResponseCode(200); $this->assertQueryContentContains('h1', 'Login'); $this->assertQuery('form#login'); // id формы }
Начнём мы с вывода dispatch(). Метод assertQuery предназначен для проверки того, что находится в объекте response. Он использует DOM пути для того, чтобы достучаться до элемента. Вызов assertQueryContentContains позволяет нам установить присутствует текст с тегом H1 на странице или нет.
Теперь вы знаете как тестировать ваши приложения.
Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/FtM3sMvQkdY/lessons.php
Дайджест новых статей по интернет-маркетингу на ваш email
Новые статьи и публикации
- 2024-03-13 » Стратегии SEO на 2024 год
- 2024-03-13 » Как использовать анимацию с помощью JavaScript-библиотеки GSAP
- 2024-03-13 » Использование GSAP 3 для веб-анимации
- 2024-03-13 » Cогласование топографической съёмки с эксплуатирующими организациями
- 2024-02-19 » Теряются лиды? Как настроить сквозную аналитику
- 2024-02-17 » Мерч и IT: на что обратить внимание в 2024 году
- 2024-02-16 » Копируем с RSync: основные примеры синхронизации файлов
- 2024-02-15 » Лучшие noCode AI платформы для создания диалоговых ботов
- 2024-02-14 » Факторы ранжирования Google 2024 — исследование Semrush
- 2024-02-12 » Перенос сайта на другой хостинг
- 2024-02-05 » В России сформирован реестр хостинг-провайдеров
- 2024-02-04 » Использование SSH для подключения к удаленному серверу Ubuntu
- 2024-02-03 » Подключаемся к серверу за NAT при помощи туннеля SSH. Простая и понятная инструкция
- 2024-02-02 » Настройка CI/CD для Gitlab-репозитория: схемы и гайд по шагам
- 2024-02-01 » GitLab CI Pipeline. Запуск сценария через SSH на удаленном сервере
- 2024-01-29 » Introduction to GitLab’s CI/CD for Continuous Deployments
- 2024-01-26 » Настройка GitLab CI/CD
- 2024-01-25 » Установка shell gitlab runner
- 2024-01-25 » Установка и регистрация gitlab-runner в docker контейнере
- 2024-01-25 » Переменные Gitlab-Ci
- 2024-01-25 » Настройка CI/CD в GitLab для синхронизации проекта с веб-серверами
- 2024-01-25 » Копирование файлов scp
- 2024-01-21 » Бездепозитные бонусы от казино: обзор условий и правил использования
- 2024-01-18 » Современная обработка ошибок в PHP
- 2024-01-18 » Пример шаблона проектирования MVC в PHP
- 2024-01-18 » Мифический человеко-DevOps
- 2023-12-28 » Google подвел итоги 2023 года в поиске
- 2023-12-28 » 5 ошибок отдела продаж, из-за которых вы теряете клиентов
- 2023-12-28 » Американский суд признал монополию Google на рынках дистрибуции Android-приложений
- 2023-12-28 » Хостинг-провайдер GoDaddy перестанет оказывать услуги пользователям из России
Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей Индийская пословица |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.