我有一个手动运行我的 clojure.test 代码的 lein 插件。它声明了一个baseuri
我希望在我的测试中访问的动态变量。我将删除并更改代码以直截了当。在这里,在我的插件内部,我有一个配置文件,它创建动态baseuri
变量并将其设置为空白字符串。
;; myplugin
;; src/myplugin/config.clj
(ns leiningen.myplugin.config)
(def ^:dynamic baseuri "")
插件中的任务设置动态baseuri
变量并使用 clojure.test 运行测试:
;; src/myplugin/runtests.clj
(ns leiningen.myplugin.runtests
(:require [leiningen.myplugin.config :as config]
[clojure.test]
[e2e.sometest]))
(defn run [project]
(binding [config/baseuri "https://google.com/"]
(println config/baseuri) ;; <-- prints google url
;; run clojure.test test cases from e2e.sometest namespace
;; This will call the `sampletest` test case
(clojure.test/run-tests e2e.sometest)
))
在我的 clojure.test 内部,我尝试使用 baseuri 变量,但绑定不成立。它的值是我最初声明的值baseuri
(一个空字符串)
;; tests/e2e/sometest.clj
(ns e2e.sometest
(:require [leiningen.myplugin.config :as config]))
(deftest sampletest
(println config/baseuri)) ;; <-- Prints an empty string instead of google url
我已经编辑了代码,以基本方式显示 clojure.test 用例是如何运行的。我只是将要运行的命名空间传递给该clojure.test/run-tests
方法。