mockcat-1.0.1.0: Declarative mocking with a single arrow `~>`.
Safe HaskellNone
LanguageHaskell2010

Test.MockCat.MockT

Synopsis

Documentation

newtype MockT (m :: Type -> Type) a Source #

Constructors

MockT 

Fields

Instances

Instances details
MonadTrans MockT Source # 
Instance details

Defined in Test.MockCat.MockT

Methods

lift :: Monad m => m a -> MockT m a #

MonadIO m => MonadIO (MockT m) Source # 
Instance details

Defined in Test.MockCat.MockT

Methods

liftIO :: IO a -> MockT m a #

Applicative m => Applicative (MockT m) Source # 
Instance details

Defined in Test.MockCat.MockT

Methods

pure :: a -> MockT m a #

(<*>) :: MockT m (a -> b) -> MockT m a -> MockT m b #

liftA2 :: (a -> b -> c) -> MockT m a -> MockT m b -> MockT m c #

(*>) :: MockT m a -> MockT m b -> MockT m b #

(<*) :: MockT m a -> MockT m b -> MockT m a #

Functor m => Functor (MockT m) Source # 
Instance details

Defined in Test.MockCat.MockT

Methods

fmap :: (a -> b) -> MockT m a -> MockT m b #

(<$) :: a -> MockT m b -> MockT m a #

Monad m => Monad (MockT m) Source # 
Instance details

Defined in Test.MockCat.MockT

Methods

(>>=) :: MockT m a -> (a -> MockT m b) -> MockT m b #

(>>) :: MockT m a -> MockT m b -> MockT m b #

return :: a -> MockT m a #

MonadIO m => MonadMockDefs (MockT m) Source # 
Instance details

Defined in Test.MockCat.MockT

Monad m => MonadWithMockContext (MockT m) Source # 
Instance details

Defined in Test.MockCat.MockT

MonadUnliftIO m => MonadUnliftIO (MockT m) Source # 
Instance details

Defined in Test.MockCat.MockT

Methods

withRunInIO :: ((forall a. MockT m a -> IO a) -> IO b) -> MockT m b #

data Definition Source #

Constructors

(KnownSymbol sym, Typeable f, Typeable params, params ~ ResolvableParamsOf f, Typeable (InvocationRecorder params)) => Definition 

data Verification f Source #

Constructors

NoVerification 
Verification (f -> IO ()) 

runMockT :: MonadIO m => MockT m a -> m a Source #

Run MockT monad. After run, verification is performed to see if the stub function has been called.

 import Test.Hspec
 import Test.MockCat
 ...

 class (Monad m) => FileOperation m where
   writeFile :: FilePath -> Text -> m ()
   readFile :: FilePath -> m Text

 operationProgram ::
   FileOperation m =>
   FilePath ->
   FilePath ->
   m ()
 operationProgram inputPath outputPath = do
   content <- readFile inputPath
   writeFile outputPath content

 makeMock [t|FileOperation|]

 spec :: Spec
 spec = do
   it "test runMockT" do
     result <- runMockT do
       _readFile $ "input.txt" ~> pack "content"
       _writeFile $ "output.text" ~> pack "content" ~> ()
       operationProgram "input.txt" "output.text"

     result shouldBe ()
 

class Monad m => MonadMockDefs (m :: Type -> Type) where Source #

Instances

Instances details
MonadIO m => MonadMockDefs (MockT m) Source # 
Instance details

Defined in Test.MockCat.MockT