hspec-2.10.10: A Testing Framework for Haskell
Stabilitystable
Safe HaskellSafe-Inferred
LanguageHaskell2010

Test.Hspec

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 #

Instances

Instances details
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 Bool 
Instance details

Defined in Test.Hspec.Core.Example

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

Defined in Test.Hspec.Core.Example

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

Defined in Test.Hspec.Core.Example

type Arg (a -> Result) = 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

class Example e #

Minimal complete definition

evaluateExample

Instances

Instances details
Example Property 
Instance details

Defined in Test.Hspec.Core.Example

Associated Types

type Arg Property #

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 #

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 #

Methods

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

Example Bool 
Instance details

Defined in Test.Hspec.Core.Example

Associated Types

type Arg Bool #

Methods

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

Example (a -> Property) 
Instance details

Defined in Test.Hspec.Core.Example

Associated Types

type Arg (a -> Property) #

Methods

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

Example (a -> Result) 
Instance details

Defined in Test.Hspec.Core.Example

Associated Types

type Arg (a -> Result) #

Methods

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

Example (a -> Expectation) 
Instance details

Defined in Test.Hspec.Core.Example

Associated Types

type Arg (a -> Expectation) #

Methods

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

Example (a -> Bool) 
Instance details

Defined in Test.Hspec.Core.Example

Associated Types

type Arg (a -> Bool) #

Methods

evaluateExample :: (a -> Bool) -> Params -> (ActionWith (Arg (a -> Bool)) -> 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 :: HasCallStack => IO a -> SpecWith a -> Spec #

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

beforeAllWith :: HasCallStack => (b -> IO a) -> SpecWith a -> SpecWith b #

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

afterAll :: HasCallStack => ActionWith a -> SpecWith a -> SpecWith a #

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

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

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

aroundAll :: HasCallStack => (ActionWith a -> IO ()) -> SpecWith a -> Spec #

aroundAll_ :: HasCallStack => (IO () -> IO ()) -> SpecWith a -> SpecWith a #

aroundAllWith :: HasCallStack => (ActionWith a -> ActionWith b) -> SpecWith a -> SpecWith b #

mapSubject :: (b -> a) -> SpecWith a -> SpecWith b #

Running a spec

hspec :: Spec -> IO () #