Jasmine i Javascript

Jasmine – behaviour driven develeopment framework służący do testowania kodu napisanego w javascripcie:

Jasmine

Pierwszy raz miałem z nim do czynienia około 1,5 roku temu. Do aplikacji pisanej w Angularze potrzebowaliśmy jakiegoś wygodnego frameworka. Wybór padł na gwiazdę dzisiejszego posta. Dlaczego? Bardzo łatwa instalacja, konfiguracja i automatyczna integracja z ReSharperem. Możemy wybrać wersję Jasmine, to czy uruchamiamy testy bezpośrednio w fizycznej przeglądarce, czy wykorzystujemy PhantomJS:

jasmine_resharper

Następnie pozostaje nam stworzenie projektu z testami, zareferowanie Jasmine i można startować z pisaniem kodu testowego. Może to wyglądać tak jak poniżej:

angularjasmine

W powyższym przykładzie oczekujemy, że “test przelicza sumę wszystkich godzin” prawidłowo. Następnie przygotowujemy kolekcję poszczególnych godzin. W linii 79 oczekujemy, że funkcja getHoursTotal, która przyjmuje jako argument wcześniej utworzoną kolekcję, zwróci nam w wyniku 5, czyli prawidłową sumę godzin.

Po lewej stronie widać natomiast, że ReSharper po konfiguracji rozpoznał, że jest to test. Nie pozostaje nic innego, jak go uruchomić (w tym przypadku przeglądarce, ale nie trzeba):

jasmineresult

JS – Booking Hour to opis modułu, który testujemy:

describe(‘JS – Booking Hour’, function () {

it(“calculates total hours”….)

}

natomiast “calculates total hours” to linia 73 naszego kodu.

I w taki oto prosty sposób możemy testować nasz javascriptowy kod 🙂

2 thoughts on “Jasmine i Javascript

  1. Trochę ubogo 😉 Warto by było poruszyć kwestię spyOn, zagnieżdzonych bloków funkcji describe czy innych podstawowych elementów. Skoro pisaliście w Angularze to można też było skorzystać z Karmy, która również pozwoliłaby lepiej tworzyć kod pokryty testami 🙂

    Pozdrawiam

    1. Traktuję to jako wprowadzenie – w przyszłości pojawi się więcej bardziej zaawansowanych tematów. Co do Karmy to używaliśmy Chutzpah 😉

Leave a Reply to Paweł Mikołajczyk Cancel reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s