Ja nevim, podle me se unittesty dostaly do mody, protoze popularni
programatori zacali psat blogy jak je to cool a kazdy kus kodu musi byt
otestovan. A pak se samozrejme vsichni zacali predhanet v tom, kdo napise
vic cool test framework. Je to dost podobne situaci s web frameworky.
Veskrze jde o trivialni ulohu, takze to zvladne napsat kde kdo (nic proti
Jablickovi :-) ) a tak se jich vyrojilo spoustu a tim vic se o nich zacalo
mluvit.

Muj nazor je, ze na malem projektu testy nepotrebujes, ten kod stejne
nebudes nikdy v budoucnu extra upravovat, maximalne nektere casti kompletne
prepises, protoze pri zasadnich zmenach to je stejne rychlejsi. Ale pokud
zacnes delat na velkem projektu, ktery se bude vyvijet a bude na nem
pracovat vice lidi, tak tam testy beru jako zachranou sit. Mozna nebudes ze
zacatku tak rychly, protoze musis psat spoustu kodu navic, ale ve chvili,
kdy se zacnes vracet a menit nejakou funkcionalitu, tak jsou to prave ty
testy, ktere te zachrani pred silenstvim.

V googlu pracuji s docela velkym projektem a rozhodne nerozumim uplne vsemu
kodu, co v nem je. Ale nastesti jsou vsechny casti otestovane, takze kdyz
udelam nejakou zmenu, tak mi staci jenom spustit testy a vim, ze jsem v
bezpeci.

Mas pravdu, ze zrovna tenhle jeden test bych nemusel psat, kdybych mel
silne typovani. Akorat bych zkontroloval, ze sedi heslo.

Dne 26. srpna 2012 18:43 Lukáš Lánský <notifications@github.com> napsal(a):

> In test/users_test.coffee:
>
> > +
> > +    it 'should create new user', (done) ->
> > +      users.createUser 'doe@example.com',
> > +        'John Doe',
> > +        'hunter2',
> > +        'john@example.com',
> > +        (err, user) ->
> > +          should.exist(user)
> > +          user.should.have.property('id', 'doe@example.com')
> > +          user.should.have.property('displayName', 'John Doe')
> > +          user.should.have.property('email', 'john@example.com')
> > +          user.should.have.property('courses').with.lengthOf(0)
> > +          user.should.have.property('achievements').with.lengthOf(0)
> > +          user.should.have.property('salt')
> > +          user.should.have.property('password')
> > +          users.hashPassword(user.salt, 'hunter2').should.eql(user.password)
>
> Jasněže vždycky ne, ale hledáš takové kombo technologií, které dobře
> otestují a co nejmíň otravují. Update záznamu můžeš (vlastně musíš)
> otestovat i o úroveň výš, na tom Seleniu.
>
> Podle mě není náhoda, že se unit testing tak rozmohl zrovna v době, kdy se
> přešlo od superstriktních a nudných jazyků typu Java k lehoučkým, akčním
> jazykům. Vypadá to jako psychologický mechanizmus: junior programátoři
> utíkají od striktních postupů, které dobře zaručují výslednou kvalitu, ale
> táhnou se; senior programátoři si z mládí ten pocit pamatují, takže
> zavrhují staré kvalitu-zaručující postupy, ale vymýšlí nové, protože tam ty
> bugy prostě mít nechtějí a protože tenhle druh kódu sami nepíší,
> neuvědomují si už, že ty nové postupy opruzují úplně stejně, jako ty staré.
> :-)
>
> —
> Reply to this email directly or view it on GitHub<https://github.com/progma/progma/pull/7/files#r1461006>.
>
>