#13, Август'2005 :: Спецвыпуск: Материалы 4-ой PHP-конференции, Киев 2005

Page 180

PHP Inside №13

Мастер-класс по введению TDD в существующий проект

for($i=1; $i<8; $i++) { $this->_addFeedback('Robot' . $i, 'robot' . $i . '@usrobotics.com', 'Hello i am Robot' . $i); } $this->get(FEEDBACK_PROJECT_HOST); $this->assertWantedPattern('/Robot7.*Robot6.*Robot5/s'); $this->assertNoLink("<"); $this->assertLink(">"); $this->clickLink(">"); $this->assertWantedPattern('/Robot4.*Robot3.*Robot2/s'); $this->assertLink("<"); $this->assertLink(">"); $this->clickLink(">"); $this->assertWantedPattern('/Robot1/'); $this->assertLink("<"); $this->assertNoLink(">"); $this->clickLink("<"); $this->assertWantedPattern('/Robot4.*Robot3.*Robot2/s'); $this->assertLink("<"); $this->assertLink(">");

}

}

$this->clickLink("<"); $this->assertWantedPattern('/Robot7.*Robot6.*Robot5/s'); $this->assertNoLink("<"); $this->assertLink(">");

Пейджер выводит по 3 сообщения, поэтому мы добавляем в тесте 8 сообщений, чтобы проверить граничные ситуации. В этом тесте мы также воспользовались методом clickLink класса WebTestCase, который позволяет проэмулировать навигацию пользователя по ссылкам. Эти тесты покрывают весь функционал приложения, поэтому, убедившись в том, что все работает, мы приступаем к долгожданному рефакторингу приложения.

Рефакторинг приложения Отделяем бизнес логику от презентационной Пожалуй, это самый важный первый шаг, который стоит сделать. Для этого несколько модифицируем index.php, выделив из него разметку в отдельный файл templates/feedback.html. index.php: <?php ob_start(); include_once('db.php'); $conn = mysql_connect($db_host, $db_user, $db_password); if($conn === FALSE) die('db connect error: ' . mysql_error());

180


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.