hspec- Behavior-Driven Development for Haskell

Safe HaskellNone




Hspec is a testing library for Haskell.

This is the library reference for Hspec. The User's Manual contains more in-depth documentation.



type Spec = SpecM ()Source

class Example a Source

A type class for examples.


Example Bool 
Example Test

This instance is deprecated, use fromHUnitTest instead!

Example Property 
Example Expectation 
Example Result 

Setting expectations

Defining a spec

describe :: String -> Spec -> SpecSource

Combine a list of specs into a larger spec.

context :: String -> Spec -> SpecSource

An alias for describe.

it :: Example a => String -> a -> SpecSource

Create a spec item.

A spec item consists of:

  • a textual description of a desired behavior
  • an example for that behavior
 describe "absolute" $ do
   it "returns a positive number when given a negative number" $
     absolute (-1) == 1

example :: Expectation -> ExpectationSource

This is a type restricted version of id. It can be used to get better error messages on type mismatches.

Compare e.g.

 it "exposes some behavior" $ example $ do


 it "exposes some behavior" $ do

pending :: ExpectationSource

Specifies a pending example.

If you want to textually specify a behavior but do not have an example yet, use this:

 describe "fancyFormatter" $ do
   it "can format text in a way that everyone likes" $

pendingWith :: String -> ExpectationSource

Specifies a pending example with a reason for why it's pending.

 describe "fancyFormatter" $ do
   it "can format text in a way that everyone likes" $
     pendingWith "waiting for clarification from the designers"

before :: IO () -> Spec -> SpecSource

Run a custom action before every spec item.

after :: IO () -> Spec -> SpecSource

Run a custom action after every spec item.

around :: (IO () -> IO ()) -> Spec -> SpecSource

Run a custom action before and/or after every spec item.

parallel :: Spec -> SpecSource

Run examples of given spec in parallel.

Running a spec

hspec :: Spec -> IO ()Source

Run given spec and write a report to stdout. Exit with exitFailure if at least one spec item fails.