gpt4 book ai didi

clojure - Clojure 测试中 stub HTTP 请求的策略

转载 作者:行者123 更新时间:2023-12-02 20:48:11 25 4
gpt4 key购买 nike

我想知道在 Clojure 集成测试中是否存在广泛使用的模式或解决方案来 stub 对第三方的出站 HTTP 请求(如 Ruby 的 webmock )。我希望能够在高层(例如,在设置函数中) stub 请求,而不必将每个测试包装在 (with-fake-http [] ... ) 或不得不诉诸依赖注入(inject)。

这对于动态变量来说是一个很好的用例吗?我想我可以在设置步骤中进入有问题的命名空间,并将副作用函数设置为无害的匿名函数。然而,这感觉很严厉,而且我不喜欢更改应用程序代码以适应我的测试的想法。 (它也并不比上面提到的解决方案好多少。)

交换包含假函数的特定于测试的 ns 是否有意义?有没有一种干净的方法可以在我的测试中做到这一点?

最佳答案

不久前我遇到了类似的情况,我找不到任何满足我需求的 Clojure 库,所以我创建了自己的库,名为 Stub HTTP 。使用示例:

(ns stub-http.example1
(:require [clojure.test :refer :all]
[stub-http.core :refer :all]
[cheshire.core :as json]
[clj-http.lite.client :as client]))

(deftest Example1
(with-routes!
{"/something" {:status 200 :content-type "application/json"
:body (json/generate-string {:hello "world"})}}
(let [response (client/get (str uri "/something"))
json-response (json/parse-string (:body response) true)]
(is (= "world" (:hello json-response))))))

关于clojure - Clojure 测试中 stub HTTP 请求的策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42536178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com