Как включить функции cljs.spec'd в набор тестов (Redux)

Я пытаюсь подключиться к cljs.testсистема отчетности с настраиваемым макросом. Я следую образцу в cljs.test/deftest:

Копирование и использование 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.

Другие вопросы по тегам