2017-09-20 35 views
3

如果我有一个导致某个输入发生错误的函数,是否可以编写一个测试来验证该输入发生错误?是否可以在HUnit中声明错误情况?

我在HUnit中找不到“assert error”功能。它在HUnit中还是可能在其他一些测试包中可用?

+2

的'HUnit-Plus'包提供['assertThrows'(https://开头hackage。 haskell.org/package/HUnit-Plus-2.0.0/docs/Test-HUnitPlus-Base.html#v:assertThrows)。 –

回答

4

您可以捕获错误并声称如果不发生使用标准异常处理:

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 
相关问题