在查看使用 clojure.test 编写的测试的 (log) 输出时,我想要能够识别与每个测试关联的输出。在每个 fixture 中暴露当前测试变量的机制将实现这一点。
一种机制可能是在调用 clojure.test/test-all-vars 中的 each-fixture-fn 之前,将一个带有当前测试变量的 test-var 变量绑定。
提议: 提出的补丁 (clj840-20161122.diff) 允许 'each' fixture 通过使用 * } 访问与当前正在执行的测试相关的变量。由于这个变化,'each' fixture 能够访问与当前测试变量相关的元数据,包括名称。
该补丁通过改变当测试及其相关的 'each' fixture 运行时函数包装的顺序来实现上述目标。在补丁之前,'each' fixture 被组合成一个单一的高阶函数,然后向它提供一个包含调用 {{test-var}} 函数的 thunk 作为其主体。在此补丁之后,{{test-var}} 函数现在负责联合和执行 'each' fixture,但重要的是,它是在将当前测试变量添加到 * } 的绑定表达式的范围内完成的。现在 {{test-var}} 调用联合 fixture 函数,而不是给联合 fixture 函数提供一个调用 {{test-var}} 的 thunk。
补丁: clj840-20161122.diff