Popularity
0.6
Declining
Activity
0.0
Stable
0
1
0
Monthly Downloads: 8
Programming language: Haskell
License: Apache License 2.0
Tags:
Testing
Latest version: v0.3.0.2
fakepull alternatives and similar packages
Based on the "Testing" category.
Alternatively, view fakepull alternatives based on common mentions on social networks and blogs.
-
hedgehog
Release with confidence, state-of-the-art property testing for Haskell. -
quickcheck-state-machine
Test monadic programs using state machine based models -
smallcheck
Test your Haskell code by exhaustively checking its properties -
curl-runnings
A declarative test framework for quickly and easily writing integration tests against JSON API's. -
ghc-prof-flamegraph
Generates data to be used with flamegraph.pl from .prof files. -
monad-mock
A Haskell package that provides a monad transformer for mocking mtl-style typeclasses -
fuzzcheck
A library for testing monadic code in the spirit of QuickCheck -
test-framework
Framework for running and organising QuickCheck test properties and HUnit test cases -
tasty-hedgehog
Tasty integration for the Hedgehog property testing library -
should-not-typecheck
A HUnit/hspec assertion to verify that an expression does not typecheck -
hspec-expectations-json
Hspec expectations on JSON Values -
quickcheck-arbitrary-adt
Typeclass for generating a list of each instance of a sum type's constructors -
hspec-golden-aeson
Use tests to monitor changes in Aeson serialization -
test-framework-th
Automagically (using Template Haskell) generates the Haskell-code you need when using HUnit -
tasty-expected-failure
Mark test cases as expected-failure -
test-framework-sandbox
test-sandbox support for the test-framework package -
markov-chain-usage-model
Computations for Markov chain usage models
Access the most powerful time series database as a service
Ingest, store, & analyze all types of time series data in a fully-managed, purpose-built database. Keep data forever with low-cost storage and superior data compression.
Promo
www.influxdata.com
Do you think we are missing an alternative of fakepull or a related project?
README
fakepull
Monad to pull from fake stream-like objects.
Example
Sometimes you might want to test a function that uses an HTTP client object to get responses from some web server, without actually making the HTTP requests.
-- BEGINNING OF EXAMPLE
import Control.Monad.IO.Class
import Data.IORef
import Data.Maybe
import Test.Hspec
import Test.Pull.Fake.IO
data Request = Request
{ searchTerm :: String
, pageSize :: Int
, cursor :: Maybe String
} deriving (Eq, Show)
data Response = Response
{ searchResult :: [String]
, nextCursor :: Maybe String
} deriving (Eq, Show)
-- | The function you test.
-- Call `sendRequest` repeatedly to get all paginated search results using
-- the cursor.
fetchAllPages :: MonadIO m => (Request -> m Response) -> String -> m [String]
fetchAllPages sendRequest term = go [] (Request term 3 Nothing)
where
go accum req = do
res <- sendRequest req
let newAccum = accum ++ searchResult res
case nextCursor res of
Just cur -> do
let newReq = req { cursor = Just cur }
go newAccum newReq
Nothing -> return newAccum
-- | The function to make an HTTP request actually. Will be stubbed.
sendRequestActually :: Request -> IO Response
sendRequestActually = error "This function should be stubbed!"
-- | Simulate the `sendRequest` function that returns a different result every
-- time.
stubbedSendRequest :: FakeStream Response -> Request -> IO Response
stubbedSendRequest stream _request =
-- NOTE: You may want to validate the request argument for testing.
-- I've omitted that for simplicity here.
fromJust <$> pull stream
main :: IO ()
main = hspec $
describe "fetchAllPages" $
it "collect all results by sending requests" $ do
let allResponses =
[ Response ["result 1-1", "result 1-2", "result 1-3"] $ Just "cursor a"
, Response ["result 2-2", "result 2-2", "result 2-3"] $ Just "cursor b"
, Response ["result 3-1"] Nothing
]
responsesToReturn <- newFakeStream allResponses
fetchAllPages (stubbedSendRequest responsesToReturn) "result"
`shouldReturn` concatMap searchResult allResponses
-- END
Related package
- fakefs
- This package is a variant of fakefs for stream-like objects.