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.
- A hozzászóláshoz be kell jelentkezni