Динамически рассчитанное описание факта midje

Я хочу написать функцию, чтобы выделить некоторые общие факты, как это

(defn check-odd-and-positive
  [n]
  (fact (str n " not odd") n => odd?)
  (fact (str n " not positive") n => positive?))

(facts "about the answer"
  (check-odd-and-positive 42))

Но это не приводит к "42 не странным" как описание факта. Я знаю, что подобный эффект может быть достигнут с помощью табличных фактов, но я хочу иметь возможность поделиться таким фактом среди групп фактов.

2 ответа

Решение

Я обнаружил, что это довольно просто с метаданными, начиная с 1.6

(fact {:midje/description (str n "not odd")} n => odd?)

Вы можете пойти с макросом здесь

(defmacro check-odd-and-positive [n]
  `(fact ~(str n " not odd") n => odd?)
  `(fact ~(str n " not positive" n => positive?))

Тем не менее, midje включает проверенное значение в отчет, поэтому я не могу четко понять, почему это вообще необходимо.

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