Före lÀsning av detta avsnitt rekommenderas lÀsning av Selenium-dokumentationen och PHPUnit-dokumentationen. HÀr följer en sammanfattning av de grundlÀggande principerna för hur man skriver ett funktionellt test i Yii:
Liksom för ett enhetstest Àr ett funktionellt test skrivet i form av en klass XyzTest
som Àrver frÄn CWebTestCase, dÀr Xyz stÄr för klassen som skall testas. Eftersom
PHPUnit_Extensions_SeleniumTestCase Àr förÀlder till CWebTestCase, kan vi anvÀnda
alla metoder som Àrvs frÄn denna.
Klassen med det funktionella testet spara i en PHP-fil med namnet XyzTest.php. Enligt
konvention sparas filen med det funktionella testet under katalogen protected/tests/functional.
Testklassen bestÄr i huvudsak av en uppsÀttning testmetoder med namn som testAbc,
dÀr Abc ofta Àr namnet pÄ den finess som Àr föremÄl för testning. För att till exempel testa
funktionen logga in anvÀndare, kan vi ha en testmetod med namnet testLogin.
En testmetod innehÄller vanligen en sekvens av satser som ger ut kommandon till Selenium RC för interaktion med webbapplikationen som testas. Testmetoden innehÄller ocksÄ assertion-satser för att verifiera att webbapplikationen svarar som förvÀntat.
LÄt oss, innan vi beskriver hur man skriver ett funktionellt test, titta nÀrmare
pÄ filen WebTestCase.php skapad av yiic webapp-kommandot. Denna fil
definierar WebTestCase vilken kan tjÀnstgöra som basklass för alla klasser med
funktionella test.
define('TEST_BASE_URL','http://localhost/yii/demos/blog/index-test.php/');
class WebTestCase extends CWebTestCase
{
/**
* Sets up before each test method runs.
* This mainly sets the base URL for the test application.
*/
protected function setUp()
{
parent::setUp();
$this->setBrowserUrl(TEST_BASE_URL);
}
......
}Klassen WebTestCase sÀtter i huvudsak upp en bas-URL till sidorna som skall testas.
Senare, i testmetoderna, kan relativa URL:er anvÀndas för att specificera vilka sidor
som skall testas.
Det Àr vÀrt att notera Àr att i bas-URL:en för testning anvÀnds index-test.php
som startskript, i stÀllet för index.php. Den enda skillnaden mellan index-test.php
och index.php Àr att den förra anvÀnder filen test.php som applikationskonfiguration
medan den senare anvÀnder main.php.
Nu kan vi beskriva hur man kan testa förfarandet för att visa en postning i applikationen blog demo. Först skriver vi testklassen som följer, med beaktande att testklassen Àrver frÄn basklassen vi just beskrivit:
class PostTest extends WebTestCase
{
public $fixtures=array(
'posts'=>'Post',
);
public function testShow()
{
$this->open('post/1');
// verify the sample post title exists
$this->assertTextPresent($this->posts['sample1']['title']);
// verify comment form exists
$this->assertTextPresent('Leave a Comment');
}
......
}I likhet med hur vi skriver en klass för enhetstestning, deklarerar vi fixturerna
som skall anvÀndas i aktuellt test. I detta fall indikerar vi att fixturen Post
skall anvÀndas. I testmetoden testShow, instruerar vi först Selenium RC att
öppna URL:en post/1. LÀgg mÀrke till att detta Àr en relativ URL och att den
kompletta URL:en bildas genom att lÀgga till den till bas-URL:en som sattes upp
i basklassen (dvs http://localhost/yii/demos/blog/index- test.php/post/1).
DÀrefter verifierar vi att det gÄr att hitta titeln för postningen sample1 i den
för tillfÀllet visade webbsidan. Vi kontrollerar Àven att sidan innehÄller texten
Leave a Comment.
Tips: Innan funktionella test kan köras mÄste Selenium-RC-servern startas. Detta kan göras genom exekvering av kommandot
java -jar selenium-server.jarfrÄn Selenium-serverns installationskatalog.
Found a typo, or you think this page needs improvement?
Edit it on GitHub !
Signup or Login in order to comment.