1
我想弄清楚如何單元測試一個方法,從cookie存儲中檢索一個cookie並將其存儲以備後用。用clj-http.fake在cookie存儲中嘲弄cookie?
(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)))))
我的測試看起來像這樣
(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
是空的,即使我看到了餅乾的處理功能被設置。
我在做什麼錯?
你,先生,是正確的! #1它是。 – 2014-11-03 12:10:04