Tesztadatok gyártása és automatikus tesztelés

Tömeges tesztadatok gyártásához használható a data/fixtures/jobs.yml fájlban az alábbi kódrészlet:


<?php for ($i 100$i <= 130$i++): ?>
  job_<?php echo $i ?>:
    JobeetCategory: programming
    company: Company <?php echo $i."\n" ?>
    position: Web Developer
    location: Paris, France
    description: Lorem ipsum dolor sit amet, consectetur adipisicing elit.
    how_to_apply: |
      Send your resume to lorem.ipsum [at] company_<?php echo $i ?>.sit
    is_public: true
    is_activated: true
    token: job_<?php echo $i."\n" ?>
    email: job@example.com

<?php endfor ?>

Látható, hogy a php a yaml feldolgozásánál figyelembe veszi a neki szóló php kódot. A php kódnak mindig a sor elejétől kell kezdődnie (pl.: a for ciklus), vagy ha a sor végét zárja, akkor egy sortöréssel kell befejeződnie (pl.: a echo $i."\n")

Automatikus teszteléshez a lime plug-in ajánlott, de lehet használni PHPUnit-ot is.

Készítsünk egy egyszerű tesztet a test/unit/JobeetTest.php fájlba:


<?php
require_once dirname(__FILE__).'/../bootstrap/unit.php';
$t = new lime_test(6);
$t->comment('::slugify()');
$t->is(Jobeet::slugify('Sensio'), 'sensio','::slugify() converts all characters to lower case');
$t->is(Jobeet::slugify('sensio labs'), 'sensio-labs','::slugify() replaces a white space by a -');
$t->is(Jobeet::slugify('sensio labs'), 'sensio-labs','::slugify() replaces several white spaces by a single -');
$t->is(Jobeet::slugify(' sensio'), 'sensio','::slugify() removes - at the beginning of a string');
$t->is(Jobeet::slugify('sensio '), 'sensio','::slugify() removes - at the end of a string');
$t->is(Jobeet::slugify('paris,france'), 'paris-france','::slugify() replaces non-ASCII characters by a -');
?>

Látszik, hogy az egyes tesztesetek kommentálásával könnyen azonosíthatóvá válik az esetleges hiba. A teszt futtatása az alábbi utasítással történik:

php symfony test:unit Jobeet

Az MVC egyik előnye, hogy a modell, a nézet és a vezérlő tesztelése könnyen elkülöníthető. Most a modellt tesztelte a lime, abból is a Jobeet osztály slugify metódusát (lib\Jobeet.class.php).

A hiba helyének pontosabb meghatározásához használható az alábbi parancs is:

php symfony test:coverage --detailed test/unit/JobeetTest.php lib/Jobeet.class.php

Ehhez azonban előtte telepíteni kell az Xdebug kiegészítőt a php-hez.