symfony2 TDD utvikling

stemmer
5

Kan noen vennligst gi en standard eksempel for utvikling i Symfony2 bruke TDD notasjon? Eller dele linker til interessante materialer for TDD Symfony2 utvikling (unntatt den offisielle dokumentasjonen :))?

PS Er det noen skriver enhet tester for kontroller del av MVC mønster?

Publisert på 09/05/2011 klokken 02:27
kilden bruker
På andre språk...                            


1 svar

stemmer
10

Jeg bare gjorde det for Silex , som er en mikro-rammeverk basert på Symfony2. Fra hva jeg forstår, er det veldig likt. Jeg vil anbefale det for en primer til Symfony2-verden.

Jeg brukte også TDD for å lage dette programmet, så det jeg gjorde var:

  1. Jeg skrev min første test for å verifisere ruten / action
  2. Deretter implementert Jeg ruten i min bootstrap
  3. Da jeg lagt påstander til min test for eksempel hva som skal vises
  4. Jeg implementert det i min kode og så videre

Et eksempel testcase (i tests/ExampleTestCase.php) ser slik ut:

<?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());
    }
}

min 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;

min web/index.php:

<?php
$app = require './../bootstrap.php';
$app->run();
Svarte 27/06/2011 kl. 18:08
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more