METABYTE
Inapoi la articole

Am șters 5 funcții ajutătoare din teste făcând datele declarative

Biblioteca Fixtura pentru Rust permite declararea datelor de test, eliminând o mulțime de cod boilerplate.

10 mai 20262 min de citit
Am șters 5 funcții ajutătoare din teste făcând datele declarative

Durere cunoscută: scrii teste și jumătate din cod e pregătirea datelor. Creezi o structură, umpli câmpurile, muți, creezi din nou. Dacă ai 20 de câmpuri – funcțiile helper se înmulțesc ca iepurii. Autorul Fixtura a zis: gata, nu mai suport.

Fixtura e un crate Rust care permite descrierea datelor de test în mod declarativ, folosind macro-uri. În loc să scrii User::new(name: "test", age: 25, ...) pentru fiecare test, declari un șablon: fixtura!(User, name: "test", age: 25). Și gata. Celelalte câmpuri se completează cu valori implicite sau aleatorii.

Autorul susține că după implementarea Fixtura a șters 5 funcții ajutătoare din setul de teste. Și nu e limita: cu cât structura e mai complexă, cu atât economisești mai mult. Nu mai ai nevoie de create_user_with_email_and_age() – specifici doar câmpurile necesare, restul se completează singur.

Desigur, nu înlocuiește fabrici complete precum fake sau quickcheck, dar pentru 80% din cazuri e perfect. Mai ales când testele se scriu rapid și trebuie întreținute. E ca mobila IKEA: înainte tăiai singur lemnul, acum iei piese gata făcute și le asamblezi.

Comentariul echipei METABYTE: Dacă testele voastre arată ca o prăjitură în straturi de helperi, poate e timpul să încercați un abordare declarativă. La METABYTE iubim instrumentele care reduc boilerplate-ul – ne rămâne mai mult timp pentru cafea și deploy-uri fără bug-uri.

URMATORUL PAS

Ti-a placut abordarea?

Aplicam aceleasi principii in proiectele clientilor: AI, automatizari, produse care nu se sting dupa lansare.