This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2019-02-13
Channels
- # adventofcode (35)
- # announcements (2)
- # arachne (1)
- # beginners (71)
- # chestnut (2)
- # cider (100)
- # cljdoc (17)
- # cljs-dev (17)
- # cljsjs (2)
- # cljsrn (2)
- # clojure (53)
- # clojure-austin (2)
- # clojure-europe (1)
- # clojure-finland (2)
- # clojure-italy (3)
- # clojure-nl (7)
- # clojure-russia (56)
- # clojure-spec (56)
- # clojure-uk (35)
- # clojurescript (58)
- # community-development (14)
- # core-async (9)
- # cursive (22)
- # data-science (5)
- # datomic (14)
- # duct (5)
- # emacs (2)
- # expound (4)
- # figwheel-main (6)
- # fulcro (23)
- # kaocha (8)
- # lumo (7)
- # off-topic (10)
- # pathom (6)
- # re-frame (17)
- # reitit (31)
- # ring (3)
- # rum (1)
- # shadow-cljs (45)
- # spacemacs (10)
- # sql (12)
- # testing (9)
- # tools-deps (130)
@kuzmin_m ты тут вопрос задавал про тесты, его в истории уже не видно я делаю как-то так:
(defn wrap-with-state [run]
(mount/start)
(run)
(mount/stop))
(use-fixtures :once wrap-with-state)
Ты не так понял вопрос. Я хочу одинаковый набор тестов с разными фикстурами в разных неймспейсах. Сейчас я вроде как нащупал более-менее приличный вариант.
(defn test-ns-hook []
(common/test-rpc-server-id)
(common/test-call-command)
(common/test-broadcast))
а зачем ему работать с фикстурами? вызываешь фикстуры до и после тестов, они же здесь последовательно работают
@kuzmin_m т.е. вот так
(defn test-ns-hook []
(init)
(common/test-rpc-server-id)
(common/test-call-command)
(common/test-broadcast)
(shutdown))
Условно Есть протокол Есть тесты на протокол Есть 2 реализации Нужно эти тесты применить к реализациям
(ns publicator.domain.abstractions.id-generator)
(defprotocol IdGenerator
(-generate [this space]))
(declare ^:dynamic *id-generator*)
(defn generate [space]
(-generate *id-generator* space))
и есть набор тестов для этого протокола:
(ns publicator.domain.abstractions.id-generator-testing
(:require
[publicator.domain.abstractions.id-generator :as sut]
[clojure.test :as t]))
(defn- return-value []
(t/is (pos-int? (sut/generate :test-space))))
(defn tests [wrapper]
(doseq [test [#'return-value]
:let [test-name (-> test symbol name)
test (wrapper test)]]
(t/testing test-name
(test))))
а сам тест выглядит вот так:
(ns publicator.domain.abstractions.id-generator-fake-test
(:require
[publicator.domain.abstractions.id-generator-fake :as sut]
[publicator.domain.abstractions.id-generator-testing :as testing]
[clojure.test :as t]))
(t/deftest id-generator
(testing/tests (fn [t]
(fn []
(with-bindings (sut/binding-map)
(t))))))
т.е. это вроде как рабочее решение но может быть кто-то что-то другое придумал т.е. мне нужны обычные shared tests
т.е. я к тому, что clojure.test довольно убог его 10 лет назад написали и почти не трогали
(ns publicator.domain.abstractions.id-generator-fake
(:require
[publicator.domain.abstractions.id-generator :as id-generator]))
(deftype IdGenerator [ids]
id-generator/IdGenerator
(-generate [_ space]
(-> ids
(swap! update space (fnil inc 0))
(get space))))
(defn build []
(IdGenerator. (atom {})))
(defn binding-map []
{#'id-generator/*id-generator* (build)})
и с cider нет интеграции хотя вот нашел - https://github.com/nubank/midje-nrepl