-
-
Notifications
You must be signed in to change notification settings - Fork 10
start! function
start!
(found in stub-http.core
) is a function that is useful if you don't want to use the with-routes! macro, for example if you want to reuse the same server
instance in multiple tests. start!
also allows you to define additional settings (such as a predefined port) which the with-routes!
macro doesn't. Usage example:
(let [server (start! {"/something" {:status 200 :content-type "text/plan" :body "hello" }})
uri (:uri server)]
(try
(is (= "hello" (:body (client/get (str uri "/something")))))
(finally
(.close server)))
This will start the stub server on a free port and return the "server" record/instance. Note that if you use the start!
function like this you need to stop it manually.
The server
schema is defined like this:
{:uri <string>
:port <int>
:nano-server <instance of fi.iki.elonen.NanoHTTPD>
:routes {:request-spec-fn <function that takes a request (map) that returns true/false whether this spec matches the request>
:request-spec <the request specification map>
:response-spec-fn <function that takes a request (map) and return the response-spec>
:response-spec <the response specification map>
:recordings <vector of recordings>}}
The server
record implements Closable which means that you can use the with-open macro in Clojure to automatically having it closed. The previous example could thus be written as:
(with-open [server (start! {"/something" {:status 200 :content-type "text/plan" :body "hello" }})]
(is (= "hello" (:body (client/get (str uri "/something"))))))
which is less verbose.
The start!
functions also allows you to define additional settings. Currently it allows you to specify an explicit port like this:
(start! {:port 8087} {"/something" {:status 200 :content-type "text/plan" :body "hello" }})