在查看使用 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}} 函数调用的 thunk 作为其主体。在此补丁之后,现在由 {{test-var}} 函数负责连接并执行 'each' fixture,但重要的是,它是在添加当前测试变量到 * 的绑定表达式的范围内执行的 绑定表达式的作用域内。现在由 {{test-var}} 来调用连接的 fixtures 函数,而不是将包含调用 {{test-var}} 的 thunk 传递给连接的 fixtures 函数。
补丁: clj840-20161122.diff