当前实现中,`clojure.test/use-fixtures` 钩子将在每个 `deftest` 基础上运行,但不会在每个 `testing`(`clojure.test/testing`)基础上运行。
因此,对于具有多个 `testing` 子句的给定 `deftest`,`use-fixtures` 将只运行一次。
从 RSpec(Ruby)背景来看,这令人惊讶 - 默认行为相反,并且我认为这更直观。
个人而言,这导致了写出给出错误阳性的测试 - 也就是说,这使得我的测试套件中的一部分变得无用,直到我偶然发现了这个问题。
据我所知,我与另一位 Clojure 开发者讨论了这个问题,他也遇到过这个问题。我的意思是,我不是唯一一个,而且肯定还有其他开发者在没有 JIRA 报告的情况下遇到过这个问题。
无论如何,当前工作的替代方案(对于每个依赖于 use-fixtures 的测试使用一个 deftest)可能过于冗长(与我的原始尝试相比),而且需要在最初就这样做,很容易就会忘记。
我想请求数
- 为 use-fixtures 实现一个选项,例如:`:run-nested?`
- 使此选项为强制指定,即程序员传递 `:run-nested? true` 或 `:run-nested? false`,除非事先设置了一个全局默认值。人们应该意识到这个细微差别,并至少思考一次(否则他们可能会遇到错误阳性和/或阴性)
我希望这听起来像是一个合理的、必要的、非破坏性的提议。
祝好 - Victor