-
-
Notifications
You must be signed in to change notification settings - Fork 39
Description
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
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
Metadata
Metadata
Assignees
Labels
Type
Projects
Status