gpt4 book ai didi

haskell - 是否可以使用 QuickCheck 检查抛出异常的情况?

转载 作者:行者123 更新时间:2023-12-02 16:28:37 25 4
gpt4 key购买 nike

假设我有一个函数应该在一种情况下计算一些值并且否则抛出异常。我想使用 QuickCheck 来确保我的函数行为正确,但如何执行这种排序并不明显的检查。是否可能,如果是,如何检查某些异常类型被抛出并且它包含有关其原因的正确信息?

最佳答案

确实ioProperty是此类测试的关键。您需要将其与 catch 结合使用。或try 。这里我展示后者:

prop_exceptional :: Int -> Property
prop_exceptional n = ioProperty $ do
result <- try . evaluate $ myDangerousFunction n
return $ r === result
where r | n == 0 = Left MyException
| otherwise = Right 42

很明显,myDangerousFunction 在获取 0 时应该抛出 MyException,否则返回 42。注意有用的功能evaluate ,您需要使用它来计算 IO 上下文中的纯函数,以捕获其中产生的异常。

关于haskell - 是否可以使用 QuickCheck 检查抛出异常的情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33451293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com