clojure icon indicating copy to clipboard operation
clojure copied to clipboard

Spec: add more commonpractices

Open practicalli-johnny opened this issue 5 months ago • 0 comments

Update Practicalli Clojure spec section to include more common practices, especially in organising specs and Generative tests https://practical.li/clojure/clojure-spec/organising-specs/

Commercial experiences

  • Statsbomb (kafka)
  • Griffin (db abstraction & generative testing)
  • Billie (web)

Community

https://clojurians.slack.com/archives/C1B1BB2Q3/p1757527317316049?thread_ts=1757523204.900519&cid=C1B1BB2Q3

Where do you put the specs? For domain, I prefer one or more namespaces dedicated to this (consider two layers - one for types, one for attributes) and included via :as-alias For functions, in a foo.specs namespace How do you validate the domain constructs? Via pre-/postconditions, within the functions via s/valid?, with s/fdefs and instrumentation or with custom validators? s/valid? for data validation from public inputs s/fdef / instrumentation for tests of functions How do you report spec failures? Just the error or with explain or expound? for internal stuff, probably s/explain for public stuff, consider expound or custom Do you validate at dev-time only or also in production? for user-side inputs, production for catching your own programming errors, dev-time only What libs/tools do you use other than plain spec? test.chuck

practicalli-johnny avatar Sep 12 '25 07:09 practicalli-johnny