在实现自己的工具模块和功能时,我想确保我的函数在特定输入(例如assertFail (head [])
)上失败,但是似乎无法在Haskell中实现此assertFail
函数有什么办法可以破解吗?
答案 0 :(得分:3)
如果我正确理解了您的要求,则可以使用spoon:
import Control.Spoon
assertFail x = case spoon x of
Nothing -> ()
Just _ -> error "unexpected success"
一个相关的问题:Is spoon unsafe in Haskell?
答案 1 :(得分:0)
一种实现原型 assertFail
的方法可能是assertFail = undefined
,因为evaluating it would raise a runtime exception。另一个将使用error
。
如果您要构建测试框架,则正确的设计可能会涉及全部功能(永远不会引发运行时错误),这些功能会返回Maybe String
之类的错误消息。
如果确实需要assertRaises
,请查看Control.Exception
,这可能会有所帮助。