definiție de prindere de testare, ghid definitiv la Yii, Yii cadru php
Testele automate trebuie să fie efectuate în mod repetat. Ne-ar dori să ruleze testele în anumite condiții cunoscute pentru a asigura repetabilitatea procesului de testare. Aceste stări sunt numite corpuri. De exemplu, pentru a testa funcția de creare a unei cereri de intrare pe blog-ul de fiecare dată când vom efectua teste, tabelele de stocare a datelor relevante despre înregistrările (de exemplu, post de masă. Comentariu), ar trebui să fie restaurate la unele Instantanee. Documentația PHPUnit descriere bună a instalației de bază de corpuri. Practic, această secțiune descrie modul în care se instalează corpurile de baze de date, așa cum tocmai am descris în exemplul.
Configurarea luminări de baze de date este, probabil, una dintre partea cea mai lungă durată în testarea aplicațiilor web bazate pe baze de date. Yii introduce componenta aplicație CDbFixtureManager pentru a atenua această problemă. Practic face următoarele atunci când se efectuează o serie de teste:
- Înainte de a efectua toate testele resetează toate tabelele relevante pentru testele de la o stare cunoscută.
- Înainte de a efectua o metodă de testare separată se debarasează un anumit tabel într-o anumită stare cunoscută.
- În timpul executării unei metode de testare oferă acces la liniile de date, care sunt realizate în dispozitivul de fixare.
Pentru a utiliza componenta CDbFixtureManager. l-am configura în configurația de aplicare, după cum urmează:
În continuare vom salva datele din dispozitivul de fixare protejate / teste / director corpuri. Acest director poate fi personalizat de proprietate CDbFixtureManager :: aplicație de configurare basePath. Aceste corpuri sunt organizate ca o colecție de PHP-fișiere numite fișiere de prindere. Fiecare fișier de prindere returnează un tablou care reprezintă rândurile inițiale de date pentru un anumit tabel. File name - la fel ca și numele tabelei. Următorul este un exemplu de date de fixare pentru masa de post. Post.php stocate în fișierul:
După cum se vede în codul de mai sus 2 sunt returnate șir de date. Fiecare rând este reprezentat ca un tablou asociativ al cărui chei - acest nume de coloane și valori - valorile coloanelor respective. In plus, fiecare rând este indexat șir (de exemplu sample1. Sample2), care se numește șirul alias. Mai târziu, când vom scrie script-uri de testare, putem accesa cu ușurință linia de numele ei. Vom acoperi acest lucru în detaliu în secțiunea următoare.
Este posibil să fi observat că noi nu definesc valoarea coloanei id în codul de mai sus dispozitivul de fixare. Acest lucru se datorează faptului că coloana id-ul - o cheie primară auto-incrementare, valoarea care va fi completat atunci când introduceți noi rânduri.
Prima dată componenta CDbFixtureManager va vizualiza fiecare fișier de prindere și de a folosi pentru a reseta tabelul corespunzător. Se resetează masa, de compensare prin cădere valoarea cheii primare, și apoi introducerea datelor din șirul de fișiere de prindere în tabel.
Uneori, noi nu vrem să resetați fiecare masă având un fișier de prindere înainte de a rula o serie de teste, pentru că resetarea prea multe fișiere de fixare ar putea lua o lungă perioadă de timp. În acest caz, putem scrie un script PHP pentru a putea configura activitatea de inițializare. Un script PHP trebuie să fie salvat în fișierul init.php în același director ca și fișierele de fixare. Atunci când componenta CDbFixtureManager va detecta acest script, acesta va executa acest script în loc de a avea pentru a reseta fiecare masă.
De asemenea, este posibil ca nu ne place modul implicit pentru a reseta masa, care este, de compensare tabelul complet și introduceți datele de fixare. Dacă acesta este cazul, putem scrie un script de inițializare pentru un fișier de prindere specific. Script-ul trebuie să fie numit la începutul care este numele de masă, și apoi - .init.php. De exemplu, script-ul de inițializare pentru masa de post ar fi numit Post.init.php. Atunci când componenta CDbFixtureManager vede acest script, acesta va executa script-ul în loc de a folosi un tabel de valori implicite este resetat.
În următoarele două secțiuni, vom descrie modul de utilizare a luminări care sunt gestionate componenta CDbFixtureManager. în unitate și teste funcționale.