在查看使用 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 被组合为一个单个高阶函数,然后给出一个 thunk,该 thunk 包含对 {{test-var}} 函数的调用来执行其主体。在此补丁之后,{{test-var}} 函数现在负责连接和执行 'each' fixture,但重要的是,它是在将当前测试变量添加到 * } 的绑定表达式中执行的。{{test-var}} 现在调用连接的 fixture 函数,而不是将包含对 {{test-var}} 调用的 thunk 传递给连接的 fixture 函数。
补丁: clj840-20161122.diff