fork of spec-kemal for
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Luna 8042202628 Merge remote-tracking branch 'upstream/master' 2 years ago
spec update kemal version 6 years ago
src Bump to 1.0.0 2 years ago
.gitignore Follow crystal 1.0.0 (#20) 3 years ago
.travis.yml First commit 8 years ago
LICENSE First commit 8 years ago added section about Kemal.config.always_rescue (#22) 2 years ago
shard.yml Merge remote-tracking branch 'upstream/master' 2 years ago


Kemal helpers to Crystal's spec for easy testing.


Add it to your shard.yml.

name: your-kemal-app
version: 0.1.0

    github: kemalcr/spec-kemal
    branch: master
    github: kemalcr/kemal
    branch: master


Just require it before your files in your spec/

require "spec-kemal"
require "../src/your-kemal-app"

Your Kemal application

# src/

require "kemal"

get "/" do
  "Hello World!"

Now you can easily test your Kemal application in your specs.

KEMAL_ENV=test crystal spec
# spec/

describe "Your::Kemal::App" do

  # You can use get,post,put,patch,delete to call the corresponding route.
  it "renders /" do
    get "/"
    response.body.should eq "Hello World!"


Rescue errors

Errors gets rescued by default which results in the Kemal's exception page is rendered.
This may not always be the desired behaviour, e.g. when a JSON parsing error occurs one might expect "[]" and not Kemal's exception page.

Set Kemal.config.always_rescue = false to prevent this behaviour and raise errors instead.


  1. Fork it ( )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request