gpt4 book ai didi

unit-testing - 发送带有 session 数据的模拟环请求

转载 作者:行者123 更新时间:2023-12-04 03:02:06 26 4
gpt4 key购买 nike

我正在尝试使用 ring.mock.request 对带有“假” session 数据的 Ring 应用程序进行单元测试.但是看着它的documentation好像没有这个功能。

在实际应用中,我使用的是 ring.middleware.session包装器:

(defroutes routes
(GET "/transactions" [{session :session}]
(response (str "Hello " (:username session)))))

(def app
(wrap-session routes))

在我的测试中:
(app (ring.mock.request/request :get "/transactions"))

但我有点卡在在哪里为我的请求添加这个“假” session 数据(例如(ring.mock.request/request :get "/transactions":session {:username "foo"})。

最佳答案

您可以使用 peridot为了这。重要特征:

peridot is designed to be used with ->, and maintains cookies across requests in the threading.


(-> (peri/session app)
(peri/request "/session-setter") ;; this would be the route that *sets* the session value
(peri/request "/transactions"))

哪里 /session-setter是我添加的一条路线,只是为了在您的 session 中设置一个值:
(GET "/session-setter" []
{:status 200
:body "OK"
:session {:username "Roberto"}})

最终你应该得到一张这样的 map (为简洁起见,我删除了一些键):
{:response {:status 200,
:headers {...},
:body "Hello Roberto"},
:request {...},
:cookie-jar {"localhost" {"ring-session" {:value "04110b66-1281-4e88-9470-546911e21ca1",
:path "/",
:domain "localhost",
:raw "ring-session=04110b66-1281-4e88-9470-546911e21ca1",
:http-only true}}}}

请注意,在响应中,我们现在看到 :body "Hello Roberto"这是使用 session key 构建的 :username .

关于unit-testing - 发送带有 session 数据的模拟环请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48340136/

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