2013-03-17 3 views
4

Я пытаюсь создать веб-разработку Clojure с помощью Ring + Compojure + lib-noir, и я не могу понять, как проверить состояние сеанса.Как проверить состояние сеанса с кольцом?

+4

«проверить состояние сеанса» означает создание единичных тестов или просто просмотр содержимого текущей сессии? –

ответ

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.

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")))) 

Вы можете проверить source code из noir.session здесь.