Creați etichete testele rspec
- 24.06.16 07:53 •
- habravalt •
- • # 303998
- • Habrahabr
- 0 •
- 1500
- cum ar fi Forbes, doar mai bine.
Bună, numele meu este Leonid și eu lucrez în echipă, folosind Ruby on Rails, compania Align Technology.
La locul de muncă vom folosi piesa în colaborare cu RSpec, iar astăzi voi împărtăși experiența noastră cu privire la modul de a face viața mai ușoară prin utilizarea tag-uri personalizate în teste.
În mod implicit, rspek în sine are mai multe dosare la teste de grup prin faptul că acestea sunt de testare: un model de controlere individuale, puncte de vedere, mai multe controlere, rutare.
În cadrul ei înșiși rspek să aplice etichete (metadate), care completează teste în orice grup de metode helper și noi afirmații. (Metadate - un hash în care se adaugă fiecare dosar cu tipul de test-cheie cu numele acestui director)
Fiecare test a fost pentru a rula acesteia este generat de o clasă proprie, care, de fapt, sunt amestecate cu module potrivite DSL și ajutoarele aserțiunile.
Puteți folosi propriile etichete, în cazul în care proprietățile care urmează să fie îndeplinite prin testul, nu permit să-l loc în orice director special.
Iată câteva tag-uri utile pe care le folosim în munca noastră.
Controlați funcționarea motorului de căutare (de exemplu Sunsport)
De obicei, caută biblioteca în șine integra cu clasele ActiveRecord / ActiveModel, setarea înapoi callbacks after_save numesc DSL metoda de configurare câmpuri indexate.
În același timp, una dintre cele mai populare căutare Sunsport bibliotecă nu se integrează în mod automat cu rspekom, care este, testele vor apela întotdeauna indexarea modelelor tale. Cel mai adesea încetinește în mod serios în jos testele, deoarece căutarea este de obicei folosit în testele numai în controlerul de căutare, și, de exemplu, în testele de sinonime și clasamentul ca configurația corectă a motorului de căutare.
Să adăugați o etichetă include de obicei, trimiterea de date la motorul de căutare numai atunci când este necesar.
Acum, marcați doar testele care într-adevăr nevoie de căutare tag-ul motorului: Solr.
De exemplu, în cazul în care locul de muncă de verificare în mod interschimbabil synonyms.txt corect:
Testarea migrației și „datelor în timp real“: baza de date ca un dispozitiv.
De fapt, pentru aplicații cu o bază de date „mici“, nimic nu împiedică utilizarea întregii baze ca un „test de seturi de date.“
Acest lucru va permite să facă assorty pe date reale și complexe de testare a migrației.
Deci, pentru tag-ul: semanate testele care încep cu un „viu“ bază de date instantaneu, vom avea nevoie de câteva lucruri. Primul - un Rake-o sarcină care devine o nouă imagine a bazei de date (de exemplu, detașabil o dată pe zi), și, dacă este necesar, curățate de date de producție importante.
Al doilea punct este aceasta: recuperarea bazei de date are nevoie de timp, deci să înceapă toate testele „normale“, și apoi pe grupul de teste „finalizate“ baza pe care au fost lansate la sfârșitul anului:
(O mai bună folosesc în continuare mecanism convențional pentru rularea testelor într-o tranzacție care este anulat la sfârșitul testului)
Rețineți că Rspec încearcă să ruleze testele în ordine aleatorie, pentru a găsi probleme cu statul, rasfatata testul anterior. (Ulterior, depanare este posibilă prin utilizarea aceeași ordine, în cazul în care transferul rspeku pavilion --seeded cu valoarea pe care se imprimă la pornire) Prin urmare, urmăm convenția, și resetați generator de numere aleatoare config.seed rspeka.
Rămâne să se stabilească regulile de eticheta Sammy:
Ei bine, în acest caz, în PB grebla-SARCINA: restore_from_snapshot cache descărcat de bază instantaneu în tmp /, să nu-l încărca de fiecare dată pe directorul mașinii dezvoltatorului.
Testați aplicația desfășurată
Chiar mai bine: putem folosi aceleași teste pentru a valida cererile de „live“ cerere. Desigur, acest lucru este posibil numai în cazul în care nu funcționează cu baza de date de la toate, sau de a citi din baza de date aceleași date ca și în serverul de dislocat.
Acum vom rula doar partea dorită a script-ul nostru de test ca un fum-test: