0
어떻게 같은 기능을 Control.Monad.Except
(두 가드 결과)를 테스트 할 수 있습니다?
어떻게 같은 기능을 Control.Monad.Except
(두 가드 결과)를 테스트 할 수 있습니다?
runExcept
을 사용하여 Except
동작을 실행하고 결과를 확인하기 위해 ~?=
을 사용하는 일부 기능을 작성하는 것은 간단합니다.
shouldThrow :: Eq e => Except e a -> e -> Test
m `shouldThrow` e = runExcept m ~?= Left e
shouldReturn :: Eq a => Except e a -> a -> Test
m `shouldReturn` x = runExcept m ~?= Right x
사용 예제는 :
testFoo = TestList [
foo -11 2 `shouldThrow` "Invalid parameter",
foo 3 1 `shouldReturn` 4
]
입니다. 이미'runExcept'를 사용하려고했지만 오류가 발생했습니다. – Randomize
그것은 내가 지금까지 본 것을이 아닌 IO 모나드와 hunit 사용하는 것은 불가능에서처럼 보인다. –
hunit의 대안? – Randomize
잘 모르겠습니다. Except를 사용하는 이유가 있습니까? 대신 여기에'어쩌면'을 사용할 것입니다. –