symfony2 тдд развивающийся - PullRequest
5 голосов
/ 09 мая 2011

Может ли кто-нибудь предоставить стандартный пример разработки в Symfony2 с использованием обозначения TDD? Или поделитесь ссылками на интересные материалы для разработки TDD Symfony2 (кроме официальной документации :))?

P.S. Кто-нибудь пишет модульные тесты для контроллера часть шаблона MVC?

1 Ответ

10 голосов
/ 27 июня 2011

Я только что сделал это для silex , который является микро-фреймворком, основанным на Symfony2.Из того, что я понимаю, это очень похоже.Я бы порекомендовал его для начинающих в мире Symfony2.

Я также использовал TDD для создания этого приложения, поэтому я сделал следующее:

  1. Я написал свой первый тест впроверить маршрут / действие
  2. Затем я реализовал маршрут в своем загрузчике
  3. Затем я добавил утверждения в свой тест, например, что должно отображаться
  4. Я реализовал это в своем кодеи так далее

Пример тестового примера (в tests/ExampleTestCase.php) выглядит следующим образом:

<?php
use Silex\WebTestCase;
use Symfony\Component\HttpFoundation\SessionStorage\ArraySessionStorage;

class ExampleTestCase extends WebTestCase
{
    /**
     * Necessary to make our application testable.
     *
     * @return Silex\Application
     */
    public function createApplication()
    {
        return require __DIR__ . '/../bootstrap.php';
    }

    /**
     * Override NativeSessionStorage
     *
     * @return void
     */
    public function setUp()
    {
        parent::setUp();
        $this->app['session.storage'] = $this->app->share(function () {
            return new ArraySessionStorage();
        });
    }

    /**
     * Test / (home)
     *
     * @return void
     */
    public function testHome()
    {
        $client  = $this->createClient();
        $crawler = $client->request('GET', '/');

        $this->assertTrue($client->getResponse()->isOk());
    }
}

my bootstrap.php:

<?php
require_once __DIR__ . '/vendor/silex.phar';

$app = new Silex\Application();

// load session extensions
$app->register(new Silex\Extension\SessionExtension());

$app->get('/home', function() use ($app) {
    return "Hello World";
});
return $app;

My web/index.php:

<?php
$app = require './../bootstrap.php';
$app->run();
...