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是这个流程。
...