J'ai trouvé d'autres questions sur des lignes similaires mais rien qui réponde à ma question dans ce scénario particulier. De plus, il semble y avoir peu de ressources qui couvrent succinctement le sujet des actions d'E/S des tests unitaires chez Haskell.Test d'unité Actions d'E/S avec Hspec
Disons que j'ai cette classe de types pour ma communication de base de données:
data Something = Something String deriving Show
class MonadIO m => MonadDB m where
getSomething :: String -> m Something
getSomething s = do
... -- assume a DB call is made and an otherwise valid function
instance MonadDB IO
et cette fonction qui l'utilise:
getIt :: MonadDB m => m (Int, Something)
getIt = do
[email protected](Something str) <- getSomething "hi"
return (length str, s) -- excuse the contrived example
Je souhaite tester cette fonction getIt
avec hspec mais sans lui parler la base de données, qui signifie vraisemblablement le remplacement MonadDB
qu'il utilise, mais comment puis-je y parvenir?
Merci. Comment votre test s'exécuterait-il dans une spécification HSpec? –
Mis à jour ma réponse. –
Le 'MonadDB' étant un paquet différent a-t-il une influence sur la capacité du compilateur à sélectionner l'instance' IdentityT m'? –