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