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