请在2024年Clojure状态调查!中分享您的想法。

欢迎!请查看关于页面以了解更多关于该平台的信息。

+2
测试
重新分类

现有的clojure.test/use-fixtures函数在广泛应用场景中工作得相当好,但我经常发现自己需要编写附加到特定测试集的函数,需要将这些测试移动到新的命名空间或手动在测试中扩展工具函数。这些方案存在一些问题

如果在一个新的命名空间中

  • 为新命名空间命名?我该如何确保其他开发者知道在哪里查找它?
  • 将所有侧重于相同功能的测试分割开来,使得难以看到整体视图。
  • 为了避免在测试文件中引入依赖项,其他公共工具函数需要移动到自己的新命名空间中。

如果手动扩展

  • 包装逻辑的引入掩盖了实际的测试焦点。
  • 使用多个工具函数包装起来很繁琐(很多缩进)。
  • 重构/重新排序多个工具函数也很繁琐(不像在向量中来回移动符号)。

请求

我希望看到一些能够让工具函数附加到特定测试的机制。这已经被社区的一些库实现(例如,fixakaocha),但这些通常需要使用他们自己定制的clojure.test/deftest实现以解决功能的缺乏(fixa)或实现自己的钩子系统(kaocha)。

可能的解决方案

  • 模仿fixa的方式,工具函数可以通过元数据附加到deftest上。
  • 添加一个新函数/宏,如testing,它接受一个工具函数集合并应用它们到所有嵌套的deftest。这将依赖于一个动态变量,并随着嵌套的发生推送/弹出工具函数

元数据示例

(deftest ^{:fixtures [fixture-a]} some-test
  (is (= 1 2)))

新宏

(with-fixtures [fixture-a fixture-b]
  (deftest some-test
    (is (= 1 2))))

1 个回答

0

被选中
 
最佳答案
感谢你记录下来了,@Alex!你愿意对这个补丁进行修正吗?
当然,不记得你是否是贡献者,但https://clojure.org/dev/dev#_becoming_a_contributor是成为贡献者的流程
...