是否可以在HUnit中断言错误情况?

mhe*_*rzl 5 error-handling haskell hunit

如果我有一个函数会导致某个输入出现错误,是否可以编写一个测试来验证该输入是否发生了错误?

我在HUnit中找不到此“断言错误”功能。它可以在HUnit或其他测试包中使用吗?

Cha*_*ert 5

您可以使用标准异常处理来捕获错误并断言是否不会发生:

errored <- catch (somethingThatErrors >> pure False) handler
if errored then
    assertFailure "Did not catch expected error"
else
    pure ()
where
   handler :: ErrorCall -> IO Bool
   handler _ = pure True
Run Code Online (Sandbox Code Playgroud)