Já statické metody neodmítám, napsal jsem myslím docela jasně, kdy je podle mne vhodné je použít. Jinak projevem nepřemýšlení je právě to zneužívání statických metod i tam, kde by měla být volná vazba.
Pokud navrhujete volnou vazbu i pro goniometrické funkce, tak už opravdu netuším, kde by by bylo vhodné použít statické metody.
Volnou vazbu na sinus zde navrhl nějaký příznivce statických metod, aby zjistil, kam až je Filip ochoten zajít. A Filip na to kývl. Proč ne? Pokud dělám program na kalkulačku s goniometrickými funkcemi, tak by se mi tato vazba hodila pro injektáž volané funkce. Jenže je statická a proto ji musím kvůli tomu zbytečně obalovat do dalšího objektu. Také by se mi do ní hodila funkce sin(), která pracuje s úhlovými stupni místo radiánů tak, abych si mohl nějakým radiobuttonem deg/rad/grad za běhu přepínat příslušnou knihovnu.
Jenže bez mockování nedokážete otestovat jenom tu jednu komponentu – nanejvýš otestujete komponentu a vše, na čem závisí.
Napřed se otestují závislosti a pak komponenta i se závislostmi? Proč by tohle neměl být unittest? Přece nebudu omezovat unittesty jen na věci, které mají mockovatelné závislosti.
Už jsem viděl dotaz, "proč někomu sin(30) nevrací 0.5". Kdyby si dotyčný napsal test na tuto knihovní funkci, jistě by poznal proč. Obráceně jsou případy, kdy si místo funkce sin() chci namockovat jinou hodnotu, např. 1.5 nebo -4.5, abych si zjistil odolnost navazující jednotky na nesmyslné hodnoty. Bez možnosti mockování by to vůbec nešlo, protože takové hodnoty z funkce sin() nedostanu.