naomijub / play-time

testing play clojure
GNU General Public License v3.0
0 stars 0 forks source link

Testabilidade #2

Closed naomijub closed 7 years ago

naomijub commented 7 years ago

@ilmotta Tem alguma ideia de como tornar esse método mais unitário e testável?


  [entity direction]
  (case direction
    :down (update entity :y dec-speed)
    :up (update entity :y inc-speed)
    :left (update entity :x dec-speed)
    :right (update entity :x inc-speed)
    nil))```
https://github.com/naomijub/play-time/blob/master/desktop/src-common/testing/input.clj
ilmotta commented 7 years ago

Essa função é pura e pode ser testada unitariamente sem problemas da forma como está. O que percebo é que clojure.spec se encaixa perfeitamente no cenário de "example testing", que é basicamente o tipo de teste que seria escrito com TDD convencional (exemplo: os testes de inc-speed e dec-speed no branch master).

Eu subi o branch https://github.com/naomijub/play-time/tree/testing-with-spec para tu dar uma olhada. O branch implementa testes utilizando clojure.spec e se integra com corretamente com o comando lein test-refresh. Já é um ótimo começo ao meu ver e dá boa cobertura, mas existem melhorias que eu deixei para tu considerar quando se sentir confortável com clojure.spec (por exemplo, "onde coloco minhas specs?", "como farei o namespacing das keywords?", etc).