Как реализовать фикстуры в ожиданиях clojure?

Недавно я начал использовать ожидания среды тестирования Clojure. В рамках моего теста у меня есть набор данных, который я хочу сбросить до исходного значения перед началом нового оператора test/expect.

В clojure.test я бы просто создал фикстуру и вызвал (use-fixtures :each my-fixture-fn).

Я искал хорошие примеры того, как это сделать в ожиданиях, но пока не повезло. Может ли кто-нибудь привести конкретный пример того, как реализовать приспособление, которое запускается перед каждым тестом в ожиданиях?


person Jared Holmberg    schedule 03.11.2015    source источник


Ответы (1)


Можно использовать оператор let с ожидаемым. Возможно, что-то вроде этого сделает эту работу за вас (непроверенный псевдокод):

(expect 
 (let [dataset {val: "original values"}]
  (function-to-be-tested val:))
 expected-return-value)

Этот реальный код работает из коробки, чтобы показать принцип:

(expect (let [ar [1 2 3]]
   (first ar)) 2)

Он возвращает следующее сообщение об ошибке, как и ожидалось:

failure in (core_test.clj:9) : image-lib.core-test
(expect (let [ar [1 2 3]] (first ar)) 2)

       expected: 1
            was: 2

Ran 2 tests containing 2 assertions in 17 msecs
1 failures, 0 errors.
Tests completed at 10:59:45.435
person Iain    schedule 06.01.2016
comment
Спасибо лен. Я нашел (expect-let) fn после того, как покопался в исходниках, но не думал об использовании (let) fn в качестве приспособления. Это очень помогает! - person Jared Holmberg; 07.01.2016