Я пытаюсь создать веб-разработку Clojure с помощью Ring + Compojure + lib-noir, и я не могу понять, как проверить состояние сеанса.Как проверить состояние сеанса с кольцом?
ответ
Я думаю, вы можете просто имитировать стиль, используемый для фактических сеансовых тестов в кольце: 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.
Если вы имеете в виду для модульных тестов, вы можете использовать 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"))))
Вы можете проверить source code из noir.session
здесь.
«проверить состояние сеанса» означает создание единичных тестов или просто просмотр содержимого текущей сессии? –