Как использовать c функцию без аргументов в Clojure? - PullRequest
3 голосов
/ 08 мая 2020

Я хочу написать несколько spe c для моего небольшого побочного проекта и беспокоюсь, как написать spe c для функции, которая не предоставляет никаких аргументов для передачи в нее.

Я хочу написать SPE c для этой конкретной функции:

(defn get-total-pages []
  (int (Math/ceil (/ (count (get-posts)) posts-per-page))))

Он вычисляет общее количество страниц, принимая posts-per-page сообщений на одной странице. Сама функция работает хорошо, но при добавлении к ней следующего spe c:

(s/fdef get-total-pages
  :args ()
  :ret int?)

я не могу выполнить на ней никакие stest/check без предупреждения:

:clojure.spec.test.check/ret {:result #error {
 :cause "Unable to construct gen at: [] for: clojure.spec.alpha$spec_impl$reify__2059@1232bda3"
...

Если сопоставление всего этого :args не используется, spe c сообщает мне, что :args отсутствует, поэтому вот мой последний вопрос: как я могу использовать c функцию, которая не предлагает аргументов?

1 Ответ

7 голосов
/ 08 мая 2020

Список :args для функции без аргументов может быть spe c 'd как пустой s/cat spe c:

(s/fdef get-total-pages
  :args (s/cat)
  :ret int?)
...