如何在clojure.test

时间:2016-02-14 15:45:45

标签: unit-testing clojure clojure-testing

在我的测试中,我使用了类似的东西:

;; api.utils
(defn wrap-test-server [f]
  (start-test-server)
  (f)
  (stop-test-server))

;; api.some-endpoint
(use-fixtures
  :once
  utils/wrap-test-server)

但是,我必须在每个测试模块中复制夹具设置代码。

如何为所有测试设置全局夹具?
甚至更好,对于一个"包"以便api.*中的测试用开始/停止夹具包裹。

请注意,在这种情况下,我并不关心包装"等级"。以下两者都有效:

;; Wrap around all the tests in the package:
(start-test-server)
(test-1)
...
(test-n)
(stop-test-server)
;; Wrap every test in the package:
(start-test-server)
(test-1)
(stop-test-server)
...
(start-test-server)
(test-n)
(stop-test-server)

1 个答案:

答案 0 :(得分:2)

你绝对可以将该函数拉入另一个命名空间并以这种方式重复使用它并执行以下操作:

(defn one-time-setup [f]
    (start-test-server)
    (f)
    (stop-test-server))

(use-fixtures :once one-time-setup)

此博客post总结得非常好。从帖子:

  

:once fixture - 在运行任何测试之前调用的方法   并且它将传递一个函数来调用它将调用所有的   测试