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