Pierwsza klasa

No dobra, to czas może utworzyć pierwszą klasę w systemie.
Wróć, posłuchamy Wujka Boba i pójdziemy ścieżką TDD.
Czyli najpierw test - potem kod produkcyjny.

No dobra, ale jak napisać test w Ruby? Jakie są ciekawe biblioteki ułatwiające?

Stworzę plik z przyszłym testem.


i poszukam czegoś ciekawego.



Internety mówią, że może test-unit się nada.

No to instalujemy przy użyciu RubyGems:

Jest?


Jest. No to teraz instalacja.


Sukces.
Dlaczego “2 gems installed”, a nie “1 gem installed”? Tak jest właśnie funkcja menedżera pakietów  RubyGems i każdego innego w innych technologiach. Pobierają pakiety, które są potrzebne do działania tego, który instalujemy.

Dooobra. To jak tego używać?

Według dokumentacji trzeba w pliku testów wpisać ciąg:

require "test-unit"

Dobra mam

I teraz chyba jakąś przykładową klaskę z testem trzeba napisać?

Wzoruję się na tym:


Jadę z koksem:


  1. Tu sobie zmienię nazwę
  2. Tu zostawię bez zmian


  1. class - to słówko kluczowe dla klasy
  2. def - to słówko kluczowe dla metody

No i samo gęste: sprawdzenie czy 1 + 1 = 2

Sprawdzę czy nie żadnych błędów składni i czy się odpala:


Nikt nie krzyczy :(
Something is no yes :)
No dobra, ale jak to odpalić. Musi być jakiś myk?

Myślę, że tu jest taka konwencja nazwy, że nazwa metody musi zaczynać się od słowa “test”.
Zmienię.

Taki TIP: Edycję w edytorze Vim zaczynamy kombinacją [Shift] + [i], czyli duże I jak Irena

Co powiesz na to:


Odpalam znowy przy użyciu ruby.
(.....)
Cytując klasyka: “yes, yes, yes”:


Swoją drogą, ciekawa jest statystyka - ile średnio odpali mi się testów/asercji na sekundę:


Jest moc :)

3 komentarze:

  1. Zebrałem feedback do posta ze Slacka:

    dloranc
    Post w sumie spoko, tylko budowałbym dłuższe zdania.

    wmioduszewski
    @coola - właśnie tak jak mówi @dloranc

    @alus +1

    Czyli coś jest na rzeczy :)

    Nie byłeś jeszcze na Slacku? No to zapraszamy serdecznie. Duuuużo tam się dzieje:

    https://devspl.slack.com/messages/dsp17/

    OdpowiedzUsuń
  2. test-unit? W sumie bez wchodzenia mógłbym zgadywać, z którego roku są te wątki na SO i nie pomyliłbym się ;) Oczywiście, jak sam pokazałeś, można go używać. Ba, nawet jest w jakimś stopniu wspierany. Tyle że... Nikt tego nie używa.

    Praktycznie wszyscy do testowania używają RSpeca (http://rspec.info), aczkolwiek jest to podejście BDD, a więc trochę się różniące od "klasyki". Natomiast ci, którzy nie decydują się na RSpeca, korzystają z minitesta (https://github.com/seattlerb/minitest).

    OdpowiedzUsuń
    Odpowiedzi
    1. OOOO, dzięki za info. Nie omieszkam obadać :)

      Usuń