就像midje
让我们用facts
一个with-state-changes
表单来指定应该在它们或内容之前、周围或之后运行的具体内容一样,如何使用 clojure.test 完成相同的操作
问问题
376 次
1 回答
1
clojure.test 中的固定装置是将函数作为参数的函数,进行一些设置,调用函数,然后进行一些清理。
测试(使用 deftest 创建)是不带参数并运行适当测试的函数。
因此,要将夹具应用于测试,您只需将该测试包装在夹具中
user> (require '[clojure.test :refer [deftest is testing]])
nil
要测试的功能:
user> (def add +)
#'user/add
对其进行测试:
user> (deftest foo (is (= (add 2 2) 5)))
#'user/foo
创建一个改变数学的夹具,以便测试可以通过:
user> (defn new-math-fixture [f]
(println "setup new math")
(with-redefs [add (constantly 5)]
(f))
(println "cleanup new math"))
#'user/new-math-fixture
没有夹具,测试失败:
user> (foo)
FAIL in (foo) (form-init5509471465153166515.clj:574)
expected: (= (add 2 2) 5)
actual: (not (= 4 5))
nil
如果我们改变数学,我们的测试很好:
user> (testing "new math"
(new-math-fixture foo))
setup new math
cleanup new math
nil
user> (testing "new math"
(deftest new-math-tests
(new-math-fixture foo)))
#'user/new-math-tests
user> (new-math-tests)
setup new math
cleanup new math
nil
于 2016-05-24T21:55:35.387 回答