Я новичок в хаскеле, и у меня проблемы с тестированием функций с кислотными состояниями. Это моя структура данных.
data UserState = UserState { name :: String }
deriving (Eq, Ord, Read, Show, Data, Typeable)
и это функция, которую я хочу проверить:
setName :: String -> Update UserState String
setName n =
do c@UserState{..} <- get
let newName = n
put $ c { name = newName }
return newName
$(makeAcidic ''UserState ['setName ])
Это мой тест:
spec :: Spec
spec = do
describe "test" $
it "test" $ do
setName "Mike" `shouldBe` UserState{ name = "Mike"}
Я понятия не имею, как смоделировать мои ожидаемые значения. UserState{ name = "Mike"}
не работает
setName
, я бы применил обновление (используя функциюupdate
), затем запросил новыйUserState
и сравнил его с моим ожидаемымUserState
- person Jean-Baptiste Potonnier   schedule 23.02.2017