Как включить функции cljs.spec'd в набор тестов (Redux)
Я пытаюсь подключиться к
cljs.test
система отчетности с настраиваемым макросом. Я следую образцу в
cljs.test/deftest
:
- https://cljs.github.io/api/cljs.test/deftest
- https://github.com/clojure/clojurescript/blob/r1.10.773-2-g946348da/src/main/cljs/cljs/test.cljc#L230-L246
Копирование и использование deftest работает нормально. Но если я просто создаю свой собственный тестовый макрос defspec-test и верну результаты, я получу ошибку
Cannot read property 'test' of undefined
. Кто-нибудь знает, что здесь происходит?
Вариант этого вопроса был ранее (в Clojure). Но теперь я пытаюсь решить Clojurescript и сталкиваюсь с этой ошибкой.
util.cljc
(defmacro deftest2 [name & body]
(when cljs.analyzer/*load-tests*
`(do
(def ~(vary-meta name assoc :test `(fn [] ~@body))
(fn [] (cljs.test/test-var (.-cljs$lang$var ~name))))
(set! (.-cljs$lang$var ~name) (var ~name)))))
(defmacro defspec-test [name sym-or-syms]
(when cljs.analyzer/*load-tests*
`(do
(def ~(vary-meta name assoc :test `(fn [] ~sym-or-syms))
(fn [] (cljs.test/test-var (.-cljs$lang$var ~name))))
(set! (.-cljs$lang$var ~name) (var ~name)))))
mytest.cljs
(deftest2 zoobar
(t/is (= 1 1)))
(defspec-test coocoobar
(t/is (= 1 1)))
Результаты запуска
Testing mytest
ERROR in (coocoobar) (TypeError:NaN:NaN)
Uncaught exception, not in assertion.
expected: nil
actual: #object[TypeError TypeError: Cannot read property 'test' of undefined]
Ran 2 tests containing 2 assertions.
0 failures, 1 errors.
1 ответ
Хорошо, разобрался с этим. Это не удалось из-за того, что я использовал макрос + навигатор Spectre. Не знаю как. Но почему-то это портит генераторы test.check .
Я предполагаю, что это какое-то странное взаимодействие, которое не работает с макросистемой Clojurescript.