我正在尝试编写一个QuickCheck属性,该属性使用cover
来确保测试数据涵盖了特定的情况,并结合了测试涉及IO操作的事实。
问题基本上可归结为以下几点:
prop = do
res <- exampleIOAction
cover 40.0 (even res) "res is even" $ res > 0
-- some IO action that returns an Int, the actual implementation doesn't matter
exampleIOAction :: IO Int
exampleIOAction = undefined
有趣的细节是,我想基于IO操作的结果来编译cover
,但是,由于Couldn't match expected type ‘IO b’ with actual type ‘Property’
,代码无法编译。
我尝试使用Test.QuickCheck.Monadic
,但无法使其工作。有没有办法使用QuickCheck来完成此操作?
1条答案
按热度按时间jgzswidk1#