一般来说,我是 Cursive 和 Clojure 的新手,在获得体面的 TDD 工作流程方面遇到了一些困难。
我的问题是后续测试运行取决于 REPL 中的状态。例如,假设您有以下代码。
(def sayHello "hello")
(deftest test-repl-state
(testing "testing state in the repl"
(is (= "hello" sayHello))))
如果您使用“Tools->REPL->Run tests in current ns in REPL”运行它,它将通过。
如果你然后像这样重构代码
(def getGreeting "hello")
(deftest test-repl-state
(testing "testing state in the repl"
(is (= "hello" sayHello))))
如果你使用“Tools->REPL->Run tests in current ns in REPL”运行它,它仍然会通过(因为sayHello
repl 中仍然存在 def )。但是,测试应该失败,因为代码当前处于失败状态(sayHello
未在代码中的任何地方定义)。
我尝试在 REPL 窗口中切换“将清除本地人”按钮,但这似乎无法解决问题。
如果有一种方法可以在 REPL 之外运行测试(或者在每次测试运行的新 REPL 中),我可以将其作为解决方案。
我想要的只是被测源代码和测试结果之间存在1对1的对应关系。
在此先感谢您的帮助。