This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2018-03-09
Channels
- # alda (5)
- # aleph (10)
- # bangalore-clj (1)
- # beginners (168)
- # cider (68)
- # cljs-dev (263)
- # clojars (4)
- # clojure (66)
- # clojure-brasil (25)
- # clojure-china (1)
- # clojure-dusseldorf (1)
- # clojure-greece (4)
- # clojure-italy (3)
- # clojure-russia (4)
- # clojure-spec (12)
- # clojure-uk (16)
- # clojurescript (36)
- # community-development (12)
- # cursive (9)
- # data-science (1)
- # datascript (8)
- # datomic (20)
- # defnpodcast (6)
- # emacs (2)
- # figwheel (2)
- # fulcro (51)
- # graphql (62)
- # immutant (14)
- # keyboards (1)
- # lein-figwheel (10)
- # leiningen (5)
- # lumo (15)
- # off-topic (4)
- # onyx (3)
- # pedestal (4)
- # portkey (13)
- # protorepl (1)
- # re-frame (8)
- # reagent (2)
- # reitit (4)
- # shadow-cljs (71)
- # spacemacs (7)
- # specter (33)
- # sql (9)
- # unrepl (75)
- # vim (7)
Всем привет, делаю простенький CRUD для ознакомления с языком и есть такие вопросы, может кто подскажет : 1) Для роутинга использую Compojure, но не пойму как там сделать марштуры именнованными? Нашел https://github.com/montoux/namedroutes , но она выглядит старой и не все поддерживает, есть альтернативы? 2) Не пойму как протестировать маршрут в форме создания записи - ("/items" POST), я использую ring.mock.request Вот мои "мысли"
(deftest items-post-test
(let [{ status :status headers :headers } (app-routes (-> (mock/request :post "/items" {:input "test"})))]
(is (= 302 status))))
Но я не пойму как правильно передать body? 3м параметром у меня не поучилось, нашел такие примеры - https://github.com/weavejester/ring-mock/blob/master/test/ring/mock/test/request.clj но там я не увидел нужного(1) кажется, нет их в compojure
2) есть специальная функция body, которая заполняет тело из словаря
(-> (request :post "/items") (body {:login "test" :password "123"))
отправляю курлом
curl -d "input=test" localhost:5005/items
получаю в логах
INFO: Finished :post /items for 127.0.0.1 in (89 ms) Status: 302 redirect to /
Проверяю в тесте
(app-routes (-> (mock/request :post "/items") (mock/body {:input "tost"})))
И получаю другой результат - страницу с формой создания записи, и лог из маршрута что пришел nil в поле input. Что я делаю не так?
Вот форма
(form-to ["POST" "/items"]
(label :text "Text:")
(text-field :input)
[:p errors]
[:button {:type "submit"} "Send"])]
вот обработчик
(POST "/items" [input]
(if-not (empty? input)
(do
(items-db/record input)
(redirect "/"))
(items-view/create-item "empty input")))