Я пишу несколько юнит-тестов, и для этого я пробую некоторые методы.Моя функция выглядит так:
(def my_map {:a 10 :b 20 :c 30})
(defn my-fn []
(<= (get my_map :a) (get my_map :b)))
И я высмеиваю следующее:
(with-redefs [my_ns/my_map (fn [] {:a 100 :b 200 :c 300})]
#(is (= true (my-fn))) ;; other asserts using the overridden function
)
Я понял, что выражение (get my_map :a)
выбрасывает NullPointerException
при использованиииздевательский метод.Тем не менее, когда выполняется то же самое с использованием исходной реализации (без насмешек), все работает нормально.
Поэтому я понял, что если я перейду на (get (my_map) :a)
, то он отлично работает с ложными ссылками, но нарушает исходную реализацию.
Что мне здесь не хватает?Я ожидал, что with-redefs
только отменяет реализацию определенного метода.