如何使用Ring测试会话状态?

时间:2013-03-17 11:53:55

标签: clojure ring noir

我正在尝试使用Ring + Compojure + lib-noir进行Clojure Web开发,我无法弄清楚如何测试会话状态。

2 个答案:

答案 0 :(得分:0)

我认为你可以模仿环中实际会话测试所使用的风格:https://github.com/ring-clojure/ring/blob/master/ring-core/test/ring/middleware/session/test/cookie.clj

只需创建一个cookie存储,然后读/写它,并断言处理程序做出相应的响应。鉴于您也在使用lib-noir,也许这个例子更合适:https://github.com/noir-clojure/lib-noir/blob/master/test/noir/session_test.clj

答案 1 :(得分:0)

如果您的意思是单元测试,则可以使用binding,这将为变量创建新的绑定。

您可以查看可以找到的详细说明here

样本单元使用lib-noir

进行测试
(ns your.test.core
  (:use [clojure.test])
  (:require [noir.session :as s]))


(binding [s/*noir-session* (atom {})]
  ; store new sessions
  (s/put! "xxxx" {:value "1234"})
  (s/put! "my_session" {:value "abcdefg"})

  ; run tests
  (is (= {:value "1234"} (s/get "xxxx")))
  (is (= {:value "abcdefg"} (s/get "my_session"))))

您可以在此处查看noir.session的{​​{3}}。