请在2024年Clojure调查问卷中分享您的想法!

欢迎!请参阅关于页面以了解更多有关此功能的信息。

+2
Test
recategorized

现有的clojure.test/use-fixtures函数对于广泛的用例运行良好,但我的确经常遇到只想将函数附加到一组测试的情况,不得不将这些测试移动到新的命名空间或手动在测试中展开fixture。这些解决方案存在一些问题

如果在新的命名空间中

  • 给新命名空间起什么名字?我怎样才能确保其他开发者知道在哪里找它?
  • 将关注同一功能的测试分开使得难以看到全局
  • 为了避免引入其他测试文件,需要将其他常见fixture移动到它们自己的新命名空间。

如果手动展开

  • 封装逻辑的包含影响了实际的测试焦点。
  • 用多个fixture包裹起来很麻烦(有很多缩进)。
  • 重新组织/排序多个fixture很麻烦(不像在向量中来回移动符号)。

请求

我希望看到将fixture附加到特定测试的某种机制。这已通过各种社区库(例如,fixakaocha)实现,但这些通常需要使用他们对clojure.test/deftest的定制实现来规避缺乏功能(fixa)或实现自己的钩子系统(kaocha)。

可能的解决方案

  • 效仿fixa的方法,可以将fixture通过元数据附加到deftest上。
  • 可以添加一个新函数/宏,类似testing,它接受一组fixture并将它们应用到所有嵌套的deftest。将依赖于动态变量,并在嵌套发生时添加和删除fixture。

元数据示例

(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即是成为贡献者的流程
...