【发布时间】:2017-03-01 15:48:52
【问题描述】:
我想知道在 Clojure 集成测试中是否有广泛使用的模式或解决方案来存根对第三方的出站 HTTP 请求(如 Ruby 的 webmock)。我希望能够在高级别(例如,在 setup 函数中)存根请求,而不必将我的每个测试都包装在 (with-fake-http [] ...) 之类的东西中,也不必求助于依赖注入。
这对于动态变量来说是一个很好的用例吗?我想我可以在设置步骤中进入有问题的命名空间,并将副作用函数设置为无害的匿名函数。但是,这感觉很重,我不喜欢更改我的应用程序代码以适应我的测试的想法。 (它也不比上面提到的解决方案好多少。)
换入包含假函数的特定于测试的 ns 是否有意义?在我的测试中是否有一种干净的方法可以做到这一点?
【问题讨论】:
-
大多数(全部?)clojure http 库将请求和响应表示为映射,因此您可以直接在测试中构建它们而无需模拟。
-
依赖注入有什么问题?您是否在函数中硬编码网址?因为你不应该那样做,那很糟糕,mkay。