hspec-2.7.1: A Testing Framework for Haskell

Stabilitystable
Safe HaskellNone
LanguageHaskell2010

Test.Hspec

Contents

Description

Hspec is a testing framework for Haskell.

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

Synopsis

Types

type Spec = SpecWith () #

type SpecWith a = SpecM a () #

type family Arg e :: Type #

Instances
type Arg Bool 
Instance details

Defined in Test.Hspec.Core.Example

type Arg Bool = ()
type Arg Property 
Instance details

Defined in Test.Hspec.Core.Example

type Arg Property = ()
type Arg Result 
Instance details

Defined in Test.Hspec.Core.Example

type Arg Result = ()
type Arg Expectation 
Instance details

Defined in Test.Hspec.Core.Example

type Arg Expectation = ()
type Arg (a -> Property) 
Instance details

Defined in Test.Hspec.Core.Example

type Arg (a -> Property) = a
type Arg (a -> Expectation) 
Instance details

Defined in Test.Hspec.Core.Example

type Arg (a -> Expectation) = a
type Arg (a -> Bool) 
Instance details

Defined in Test.Hspec.Core.Example

type Arg (a -> Bool) = a
type Arg (a -> Result) 
Instance details

Defined in Test.Hspec.Core.Example

type Arg (a -> Result) = a

class Example e #

Minimal complete definition

evaluateExample

Instances
Example Bool 
Instance details

Defined in Test.Hspec.Core.Example

Associated Types

type Arg Bool :: Type #

Methods

evaluateExample :: Bool -> Params -> (ActionWith (Arg Bool) -> IO ()) -> ProgressCallback -> IO Result

Example Property 
Instance details

Defined in Test.Hspec.Core.Example

Associated Types

type Arg Property :: Type #

Methods

evaluateExample :: Property -> Params -> (ActionWith (Arg Property) -> IO ()) -> ProgressCallback -> IO Result

Example Result 
Instance details

Defined in Test.Hspec.Core.Example

Associated Types

type Arg Result :: Type #

Methods

evaluateExample :: Result -> Params -> (ActionWith (Arg Result) -> IO ()) -> ProgressCallback -> IO Result

Example Expectation 
Instance details

Defined in Test.Hspec.Core.Example

Associated Types

type Arg Expectation :: Type #

Methods

evaluateExample :: Expectation -> Params -> (ActionWith (Arg Expectation) -> IO ()) -> ProgressCallback -> IO Result

Example (a -> Result) 
Instance details

Defined in Test.Hspec.Core.Example

Associated Types

type Arg (a -> Result) :: Type #

Methods

evaluateExample :: (a -> Result) -> Params -> (ActionWith (Arg (a -> Result)) -> IO ()) -> ProgressCallback -> IO Result

Example (a -> Bool) 
Instance details

Defined in Test.Hspec.Core.Example

Associated Types

type Arg (a -> Bool) :: Type #

Methods

evaluateExample :: (a -> Bool) -> Params -> (ActionWith (Arg (a -> Bool)) -> IO ()) -> ProgressCallback -> IO Result

Example (a -> Expectation) 
Instance details

Defined in Test.Hspec.Core.Example

Associated Types

type Arg (a -> Expectation) :: Type #

Methods

evaluateExample :: (a -> Expectation) -> Params -> (ActionWith (Arg (a -> Expectation)) -> IO ()) -> ProgressCallback -> IO Result

Example (a -> Property) 
Instance details

Defined in Test.Hspec.Core.Example

Associated Types

type Arg (a -> Property) :: Type #

Methods

evaluateExample :: (a -> Property) -> Params -> (ActionWith (Arg (a -> Property)) -> IO ()) -> ProgressCallback -> IO Result

Setting expectations

Defining a spec

it :: (HasCallStack, Example a) => String -> a -> SpecWith (Arg a) #

specify :: (HasCallStack, Example a) => String -> a -> SpecWith (Arg a) #

describe :: HasCallStack => String -> SpecWith a -> SpecWith a #

context :: HasCallStack => String -> SpecWith a -> SpecWith a #

example :: Expectation -> Expectation Source #

example 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

runIO :: IO r -> SpecM a r #

Pending spec items

During a test run a pending spec item is:

  1. not executed
  2. reported as "pending"

pending :: HasCallStack -> Expectation #

pendingWith :: HasCallStack -> String -> Expectation #

xit :: (HasCallStack, Example a) => String -> a -> SpecWith (Arg a) #

xspecify :: (HasCallStack, Example a) => String -> a -> SpecWith (Arg a) #

xdescribe :: HasCallStack => String -> SpecWith a -> SpecWith a #

xcontext :: HasCallStack => String -> SpecWith a -> SpecWith a #

Focused spec items

During a test run, when a spec contains focused spec items, all other spec items are ignored.

fit :: (HasCallStack, Example a) => String -> a -> SpecWith (Arg a) #

fspecify :: (HasCallStack, Example a) => String -> a -> SpecWith (Arg a) #

fdescribe :: HasCallStack => String -> SpecWith a -> SpecWith a #

fcontext :: HasCallStack => String -> SpecWith a -> SpecWith a #

Hooks

type ActionWith a = a -> IO () #

before :: IO a -> SpecWith a -> Spec #

before_ :: IO () -> SpecWith a -> SpecWith a #

beforeWith :: (b -> IO a) -> SpecWith a -> SpecWith b #

beforeAll :: IO a -> SpecWith a -> Spec #

beforeAll_ :: IO () -> SpecWith a -> SpecWith a #

after_ :: IO () -> SpecWith a -> SpecWith a #

afterAll_ :: IO () -> SpecWith a -> SpecWith a #

around :: (ActionWith a -> IO ()) -> SpecWith a -> Spec #

around_ :: (IO () -> IO ()) -> SpecWith a -> SpecWith a #

Running a spec

hspec :: Spec -> IO () #