Ich versuche, die Ring.mock.requests-Bibliothek zu verwenden, um einen http-Dienst zu testen. Ich habe dieses Stück CodeCompojure-api respektiert Körper von ring.mock.requests
(auth-routes
(->
(mock/request :post "/auth/user")
(mock/body {:username "user" :password "pass"})
(mock/content-type "application/json")))
Der Innenteil mit dem faden ersten Makro korrekt zu funktionieren scheint, aber es funktioniert nicht, wenn ich versuche, den Mock-Antrag zu stellen
to-Routen auth Und das ist meine Route:
(def auth-routes
(context "/auth" []
:tags ["Authentication"]
(POST "/user" []
:return s/Uuid
:body [request m/User]
:summary "Create new user"
(ok (auth/create-user request)))) ...)
Das ist mein Schema:
(def User {:username s/Str
:password s/Str})
Die Ausnahme, die ich zu sehen bin ist
clojure.lang.ExceptionInfo
Request validation failed
{:error (not (map? nil)), :type :compojure.api.exception/request-validation}
Es sieht aus wie meine Strecke nil
wie der Körper wird immer, und ich erwarte {:username "user" :password "pass"}
dort zu sein.
Was mache ich falsch und wie gebe ich einen Körper an diese Route weiter?
'(body request)' bereits Serialisierung. – munk
Ist Ihre 'auth-routes' Definition korrekt? Sollte Ihr "POST"/Benutzer "[]" nicht so etwas wie "POST"/Benutzer "Anfrage" sein? – kongeor
Es ist korrekt durch die Compojure-API-Beispiele [hier] (https://github.com/metosin/compojure-api) – munk