02.07.06

Watir, Ruby, objekti i varijable

Posted in Hrvatski (Croatian), Ruby, Watir at 11:46 am by Željko Filipin

Živim od testiranja web aplikacija. Služim se Rubyjem i Watirom za automatiziranje testova funkcionalnosti. Moje skripte su narasle, pa sam napravio mali framework (ne znam kako ovo pametno prevesti) kako bi ih pojednostavnio (sav kod u ovom članku je pojednostavljen i neisproban).

Klasa Page olakšava provjeravanje url-a i tekst(ov)a stranice.

“Pogledaj element” stranica u aplikaciji koju testiram ima tekst (breadcrumb - opet ne znam kako bi ovo smisleno preveo) {vrsta_elementa} > View (primjer: File > View).”

Nakon što je element dodan/promijenjen, na toj stranici se nalazi i tekst {vrsta_elementa} {akcija}. (primjer: File added.).

Klasa File, naravno, testira datoteke.

I sve baš lijepo radi. Sve što trebam napisati je ovo.

Postoje tri objekta. Jedan za svaku (@page_view…) varijablu. “id” u “Page:{id}” je različit za svaku varijablu.


#<Page:0×2b5ac28 @url=”app.com/view.aspx”, @texts=["File > View"]>
#<Page:0×2b5ab98 @url=”app.com/view.aspx”, @texts=["File > View", "File added."]>
#<Page:0×2b5ab08 @url=”app.com/view.aspx”, @texts=["File > View", "File edited."]>

Ali, dupliciranje me muči.

Želio bi da File#initialize izgleda ovako.

Ali (iznenađenje!), to ne radi. Pa, prilično sam novi u objektno orijentiranom svijetu, pa mi to i nije iznenađenje.

Na ovaj način stvoren je samo jedan Page objekt, i sve tri varijable pokazuju na njega. Bez obzira koju varijablu promijenim, ona promijeni objekt na koji pokazuje. Rezultat je da su sve tri varijable iste. To nije ono što sam želio.


#<Page:0×2820048 @url=”app.com/view.aspx”, @texts=["File > View", "File added.", "File edited."]>
#<Page:0×2820048 @url=”app.com/view.aspx”, @texts=["File > View", "File added.", "File edited."]>
#<Page:0×2820048 @url=”app.com/view.aspx”, @texts=["File > View", "File added.", "File edited."]>

Isprobao sam nekoliko alternativa, ali niti jedna nije uspjela. Za sad mogu živjeti s duplikacijom, ali bi je volio ukloniti iz mojih skripti.

Leave a Comment