hspec-1.8.1.1: Behavior-Driven Development for Haskell

Stability | stable
Safe Haskell | None

Test.Hspec

Contents

- Types
- Setting expectations
- Defining a spec
- Running a spec

Description

Hspec is a testing library for Haskell.

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

Synopsis

- type Spec = SpecM ()
- class Example a
- module Test.Hspec.Expectations
- describe :: String -> Spec -> Spec
- context :: String -> Spec -> Spec
- it :: Example a => String -> a -> Spec
- example :: Expectation -> Expectation
- pending :: Expectation
- pendingWith :: String -> Expectation
- before :: IO () -> Spec -> Spec
- after :: IO () -> Spec -> Spec
- around :: (IO () -> IO ()) -> Spec -> Spec
- parallel :: Spec -> Spec
- hspec :: Spec -> IO ()

# Types

type Spec = SpecM ()Source

class Example a Source

A type class for examples.

Instances

Example Bool |
Example Test | This instance is deprecated, use `fromHUnitTest` instead!
Example Property |
Example Expectation |
Example Result |

# Setting expectations

module Test.Hspec.Expectations

# Defining a spec

describe :: String -> Spec -> Spec Source

Combine a list of specs into a larger spec.

context :: String -> Spec -> Spec Source

An alias for `describe`.

it :: Example a => String -> a -> Spec Source

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 -> Expectation Source

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
       putStrLn

with

     it "exposes some behavior" $ do
       putStrLn

pending :: Expectation Source

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" $
         pending

pendingWith :: String -> Expectation Source

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 -> Spec Source

Run a custom action before every spec item.

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

Run a custom action after every spec item.

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

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

parallel :: Spec -> Spec Source

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.