@Spoil_me_easy: Хочу напомнить: вы просрали уже 25 дней лета. У вас ещё 67. Удачи.
Новости
Вчера вышел первый релиз кандидат Symfony2. Т.е. не за горами релиз первой стабильной версии Symfony2, а значит его потихоньку можно использовать для реализации коммерческих проектов. УРА!
Начал работу PEAR канал Symfony2. На нем доступны отдельные компоненты фреймворка. Если вы используете эти компоненты в нескольких проектах, тогда жизнь станет чуточку проще ;).
В Symfony2 появился интерактивный генератор бандлов, который может сильно облегчить жизнь на начальных стадиях разработки проекта. Посмотрите видео — это магия :).
UPD. Совсем вылетело из головы! С недавнего времени mailing лист по симфони разделили на отдельные mailing листы для первой и для второй версии фреймворка.
Полезные ресурсы
Почитайте блог Ричарда Миллера — за относительно небольшой промежуток времени он успел написать довольно много интересных статей. К примеру, “Symfony2: Moving Away From the Base Controller” — руководство о том как избавиться от наследования базового контроллера и сделать контроллер отдельным сервисом. Использовать почерпнутые из статьи знания следует с умом. Например, Фабьен Потенсьер негативно высказывается о таком подходе.
Интересные материалы
В статье Getting into Behat with Symfony2 ребята делятся опытом работы с Behat (BDD для PHP) в контексте Symfony2. Я все собираюсь-собираюсь попробовать, но никак не соберусь )).
Вторая статья “Fully isolated tests in Symfony2” тоже затрагивает тему тестирования. Идея заключается в том, что при каждом setup’е теста в памяти разворачивается чистая БД и в неё подтягиваются нужные фикстуры. Процессы удаления/создания БД, очистки кеша и загрузки фикстур запускаются при помощи команд консоли Symfony2:
public function setUp() { $kernel = new \AppKernel("test", true); $kernel->boot(); $this->_application = new \Symfony\Bundle\FrameworkBundle\Console\Application($kernel); $this->_application->setAutoExit(false); $this->runConsole("doctrine:schema:drop", array("--force" => true)); $this->runConsole("doctrine:schema:create"); $this->runConsole("cache:warmup"); $this->runConsole("doctrine:fixtures:load", array("--fixtures" => __DIR__ . "/../DataFixtures")); } protected function runConsole($command, Array $options = array()) { $options["-e"] = "test"; $options["-q"] = null; $options = array_merge($options, array('command' => $command)); return $this->_application->run(new \Symfony\Component\Console\Input\ArrayInput($options)); } |
Это интересно в качестве примера для использования в собственных проектах.
Что же касается самих тестов, то такой подход требует больше ресурсов и времени чем тот, который используется в LiipFunctionalTestBundle. Поэтому я отдаю предпочтение последнему.
Не стоит на месте и написание документации — в поваренной книге появились следующие статьи:
—
На этом все. Ловлю себя на мысли что интересных материалов было намного больше, но я забывал сохранять ссылки ((. Если у вас есть что добавить, тогда пишите в комментариях или твитьте на @stfalcon. Спасибо за внимание ;).
“Вторая статья “Fully isolated tests in Symfony2” тоже затрагивает тему тестирования. Идея заключается в том, что при каждом setup’е теста в памяти разворачивается чистая БД и в неё подтягиваются нужные фикстуры.”
Даже не представляю как без этого можно тестировать 🙂 Кстати, очень советую юзать SQLite memory, тесты бегают как горные козлики по килиманджаро.
Ок, попробую поюзать memory.
Ты что-то делаешь уже на symfony2?
Пока нет. Но чувствую вскоре придется по частям переводить на него наш проект. В плане веба, симфони2 вряд ли нам что-то упростит, никаких особых фич там и нет, а вот в плане background tasks, логгеров и прочего, может нехило помочь.
Так что посмотрю, может заюзаю их компоненты.
Насчет мемори это нужно, да. Так тесты у меня 5 минут ходили, теперь секунд 30. Но там есть нюансы совместимости MySQL и SQLite.
“Так тесты у меня 5 минут ходили, теперь секунд 30.” — ты перед каждым тестом пересоздавал БД? в LiipFunctionalTestBundle таблицы просто очищаются. у меня около 40 секунд тесты идут.