使用QuickCheck抛出异常时是否可以检查案例?

时间:2015-10-31 11:59:29

标签: haskell exception quickcheck

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

1 个答案:

答案 0 :(得分:0)

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

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每当MyException获得0时就会抛出42,否则会返回IO。请注意有用的函数evaluate,您需要使用它来评估$deletequery = ' DELIMITER // CREATE TRIGGER after_insert_job_sent AFTER INSERT ON Envato_CustomConfig_job_sent FOR EACH ROW BEGIN DELETE FROM `Envato_CustomConfig_Job_Queue` WHERE Job_ID = '.$value['Job_ID'].' AND email -'.$value['email'].'; UPDATE `envato_customconfig_job_status` SET `email_Sent_Count`= email_Sent_Count+1 WHERE Job_ID = '.$value['Job_ID'].' END; // DELIMITER; insert into Envato_CustomConfig_job_sent values ( NULL , '.$value['Job_ID'].', '.$value['email'].', now(); '; 上下文中的纯函数以捕获在那里生成的异常。