Helper for faking clj-http requests. For testing. You monster.
Clojure
Switch branches/tags
Nothing to show
Pull request Compare This branch is 48 commits behind myfreeweb:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
src/clj_http
test/clj_http/test
.gitignore
README.md
project.clj

README.md

clj-http-fake

Basically, fakeweb in Clojure, for clj-http.

Usage

In your project.clj file:

[clj-http-fake "0.3.0"]

In your namespace declaration:

(ns myapp.test.core
  (:require [clj-http.client :as c])
  (:use clj-http.fake))

Basic operations:

(with-fake-routes {
  ;; Exact string match:
  "http://google.com/apps" (fn [request] {:status 200 :headers {} :body "Hey, do I look like Google.com?"})
  ;; matches (c/get "http://google.com/apps")

  ;; Exact string match with query params:
  "http://google.com/?query=param" (fn [request] {:status 200 :headers {} :body "Nah, that can't be Google!"})
  ;; matches (c/get "http://google.com/" {:query-params {:query "param"}})

  ;; Regexp match:
  #"http://([a-z]+).floatboth.com" (fn [req] {:status 200 :headers {} :body "trololo"})
  ;; matches (c/get "http://labs.floatboth.com"), (c/get "http://ringfinger.floatboth.com") and so on, based on regexp.

  ;; Match based an HTTP method:
  "http://shmoogle.com/" {:get (fn [req] {:status 200 :headers {} :body "What is Scmoogle anyways?"})}
  ;; will match only (c/get "http://google.com/")

  ;; Match multiple HTTP methods:
  "http://doogle.com/" {:get    (fn [req] {:status 200 :headers {} :body "Nah, that can't be Google!"})
                        :delete (fn [req] {:status 401 :headers {} :body "Do you think you can delete me?!"})}
 }
 ;; Your tests with requests here
 )

License

Released under the MIT License.

Contributors