当查看 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}} 现在调用连接的 fixture 函数,而不是将包含对 {{test-var}} 函数调用的 thunk 传递给连接的 fixture 函数。
补丁: clj840-20161122.diff