Skip to content

Spec: add more commonpractices #477

@practicalli-johnny

Description

@practicalli-johnny

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

Metadata

Metadata

Labels

No labels
No labels

Type

Projects

Status

Options

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions