4

我正在尝试使用 Ring + Compojure + lib-noir 进行 Clojure Web 开发,但我不知道如何测试会话状态。

4

2 回答 2

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 。

于 2014-08-02T02:29:20.873 回答
0

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

您可以在这里找到一个很好的解释。

一个示例单元测试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

于 2015-12-17T16:45:37.143 回答