It's desirable to be able to override a function spec within the scope of a check.
For example:
(require '[clojure.spec.alpha :as s])
(require '[clojure.spec.test.alpha :as stest])
(defn a [x])
(s/fdef a
:args (s/cat :x int?)
:fn (fn [_] true))
(s/fdef b
:args (s/cat :x int?)
:fn (fn [_] false))
;; should pass
(stest/check `a)
(stest/instrument `a {:spec {`a `b}})
;; should fail
(stest/check `a)
;; Similar cases which should fail:
(stest/instrument `a {:spec {`a (s/fspec :args (s/cat :x int?) :fn (fn [_] false))}})
(stest/check `a)
(stest/instrument `a {:spec {`a (s/get-spec `b)}})
(stest/check `a)