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