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