Я получил базовую функциональность читательской монады из книги learnyouahaskell, и я видел здесь несколько советов, как использовать ее для внедрения зависимостей.
даже здесь есть несколько примеров на стеке потока, я не знаю, как использовать его для тестирования интеграции.
мой код:
list :: Ctx -> [String] -> IO String
list ctx args = do
d <- eitherDecode <$> Uplink.get (token ctx) (endpointActivities ctx) :: IO (Either String Activities)
case d of
Left err -> return err
Right result -> return $ unlines . filterByPrefix (parsePrefix args) . extractNames $ activities result
uplink.hs
get :: String -> String -> IO B.ByteString
get token endpoint = do
req <- parseRequest endpoint
resp <- httpLBS $ withAuth token req
return $ getResponseBody resp
как я могу издеваться над httpLBS - вызовом для тестирования интеграции с читалкой-монадой?
РЕДАКТИРОВАТЬ: !!!!
У меня почти есть это сейчас с читалкой-монадой. осталась только одна проблема - я не знаю, как определить эту функцию httpsLBS в моем типе данных Ctx.
httpLBS -функции-подпись:
httpLBS :: MonadIO m => Request -> m (Response ByteString)
мое определение типа данных Ctx:
data Ctx =
Ctx {
token :: String,
endpointActivities :: String,
endpointTimeTrackingStart :: String,
httpLBSFunc :: MonadIO m => Request -> m (Response ByteString)
} deriving (Show)
я всегда получаю сообщение об ошибке: Не входит в область: переменная типа ‘m’
Как я могу определить эту функцию в моем типе данных Ctx с ее ограничениями?
Я обещаю, что выложу свое решение позже, когда эта последняя проблема будет решена