This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2022-05-31
Channels
- # announcements (8)
- # babashka (8)
- # beginners (13)
- # biff (1)
- # calva (1)
- # cider (12)
- # clj-kondo (16)
- # cljs-dev (3)
- # cljsrn (14)
- # clojure (18)
- # clojure-austin (2)
- # clojure-czech (3)
- # clojure-europe (54)
- # clojure-germany (5)
- # clojure-nl (1)
- # clojure-norway (2)
- # clojure-spec (4)
- # clojure-survey (2)
- # clojure-uk (1)
- # clojured (15)
- # clojurescript (5)
- # conjure (6)
- # core-async (65)
- # cursive (24)
- # data-science (1)
- # emacs (9)
- # events (3)
- # graphql (5)
- # integrant (6)
- # jobs (2)
- # joyride (62)
- # lsp (5)
- # malli (10)
- # off-topic (20)
- # pathom (57)
- # polylith (18)
- # re-frame (12)
- # remote-jobs (3)
- # rewrite-clj (14)
- # sci (2)
- # shadow-cljs (41)
- # sql (9)
- # tools-deps (68)
I've been reminding myself how to use spec and one thing I can't remember is how to get better errors from this sort of thing?
(defn load-order [order-book {:keys [side id] :as order}]
{:pre [(s/valid? :order/order order)]}
(assoc-in order-book [side id] order))
Which does give me this:
Execution error (AssertionError) at fruit-economy.sim.market/load-order (market.clj:23).
Assert failed: (is (s/valid? :order/order order))
But considering it's a spec, I was expecting a little more?
I've hacked it a bit by wrapping it in an is
, which gives me:
FAIL in () (market.clj:2)
expected: (s/valid? :order/order order)
actual: (not
(s/valid?
:order/order
{:price 1,
:size 425.0,
:side :sell,
:id 10229,
:good-kw :inventory}))
But I'm sure there's a better way?
EDIT:
@jcf suggested using fdef
to specify args and instrument, so I've swapped to doing that and calling instrument on debug as so in my core
ns:
(when (debug?)
(let [instrument (requiring-resolve 'clojure.spec.test.alpha/instrument)]
(instrument 'fruit-economy.sim.market/load-order)))
To be honest this is pretty great, but perhaps there's something I'm missing? So I thought I'd pop the question here!
REF: https://github.com/Folcon/fruit-economy/commit/a92b4b5329eabd7347240804f04224b6440ebdb2