首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在cookie商店里用CLJ-http.fid模仿曲奇?

在cookie商店里用CLJ-http.fid模仿曲奇?
EN

Stack Overflow用户
提问于 2014-11-03 09:08:34
回答 1查看 334关注 0票数 1

我正在试图找出如何单元测试一个方法,该方法从cookie商店中检索一个cookie,并将其存储以供进一步使用。

代码语言:javascript
复制
(defn update-rb-session-id
  []
  (hiccup.util/with-base-url @rb-url
    (log/info "Updating RB session...")
    (let [url (hiccup.util/url "/api/review-requests/")
      cs (cookies/cookie-store)
      res (client/get (hiccup.util/to-str url)
                {:content-type :json
                 :cookie-store cs
                 :basic-auth [@rb-user @rb-password]
                 :as :json})]
      (log/info "response: " res)
      (log/info "cookie store: " (cookies/get-cookies cs))
      (let [sid (:value (get (cookies/get-cookies cs) "rbsessionid"))]
        (reset! rb-session-id sid)))))

我的测试看上去像这样

代码语言:javascript
复制
(facts "ReviewBoard"
 ((with-fake-routes-in-isolation {
   "https://my.reviewboard.com/api/review-requests/"
   (fn [request] {:status 200
                 :headers {
                           "content-type" "text/json"
                           "set-cookie" "rbsessionid=testsessionid;Path=/"}
                 :body "{\"review_requests\": []}"})}
  (with-redefs [slack-nag.reviewboard/rb-url (delay "https://my.reviewboard.com/")
              slack-nag.reviewboard/rb-user (delay "test-user")
              slack-nag.reviewboard/rb-password (delay "test-password")]
    (fact "it updates rb-session-id atom"
        (do
          (update-rb-session-id)
          (= rb-session-id "testsessionid")) => truthy)))))

然而,我的cookie-store是空的,即使我看到在处理程序函数中设置了cookie。

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-03 10:45:09

你没做错什么。问题是cookie存储操作是在Http.core/请求内部执行的(由底层java库完成),而clj-http.fid所做的是模拟版本的取代这一职能,因此操作cookie存储的java代码永远不会执行。

我的建议是:

  1. res应该有一个包含所有cookie的映射的:cookie条目,所以只需使用它,而不是创建和使用显式cookie存储。Cookie存储用于向同一台服务器发出几个请求,而不必担心在每个后续请求中设置Cookie。从示例代码来看,您似乎不需要cookie商店。
  2. 如果您真的需要一个cookie商店,那么您需要自己模拟java lib的行为。在您的测试中设置一个自定义中间件可能会起作用。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26710934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档