This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2022-09-15
Channels
- # ai (35)
- # announcements (3)
- # babashka (16)
- # babashka-sci-dev (2)
- # beginners (37)
- # biff (16)
- # calva (5)
- # cider (2)
- # clj-commons (81)
- # clj-kondo (29)
- # cljfx (2)
- # cljs-dev (4)
- # clojars (4)
- # clojure (92)
- # clojure-europe (72)
- # clojure-losangeles (8)
- # clojure-nl (1)
- # clojure-norway (10)
- # clojure-uk (1)
- # clojurescript (20)
- # clojutre (2)
- # conjure (2)
- # data-science (18)
- # datomic (1)
- # emacs (10)
- # fulcro (49)
- # joyride (1)
- # kaocha (23)
- # leiningen (8)
- # lsp (14)
- # meander (5)
- # off-topic (93)
- # polylith (4)
- # re-frame (20)
- # reagent (9)
- # reitit (2)
- # remote-jobs (8)
- # sci (1)
- # shadow-cljs (21)
- # testing (3)
- # vim (27)
- # xtdb (35)
Morn!
Jeg ❤️ Spec. Bruker det til:
• Å sjekke at data på vei inn i systemet er riktig (merk: dette ikke validering med tilbakemelding til brukeren, dette er for å sikre mot kodefeil vha. clojure.spec.alpha/assert
)
• Å generere testdata
• Dokumentasjon (som er kjørbar, jfr. punktene over, og derfor ikke råtner)
Jo, det første punktet gjelder i prod også. Jeg setter (s/check-asserts true)
(kunne også gjort det med en Java system property), og har mange funksjoner med {:pre [(s/assert ::en-eller-annen-spec et-argument-til-funksjonen)]}
. Så det feiler i produksjon hvis input er feil. Men det gjør det jo ikke, for jeg har tester! 🙂 Joda, det hender det feiler, men det er fordi jeg ikke har forutsett et eller annet. Da skriver jeg en test, fikser koden som kaller den aktuelle funksjonen, og går videre.
Det fins noen (assert (s/valid? ::en-eller-annen-spec et-argument) "En forklaring")
rundt forbi også. Den praktiske forskjellen er vel bare hvordan man eventuelt skrur av/på kastingen av exceptions.
Jeg baserte et ui-bibliotek på spec en gang i tiden. Var også veldig fornøyd med bruken av det på den måten, men mener å huske at det ble litt performance problemer. https://github.com/bdo-labs/ui