测试IO返回值

时间:2015-03-21 13:58:52

标签: unit-testing haskell testing io

我有一个声明,我需要检查返回值:

> let a = tRunUmeQuery (selectByCount "Word" "Acoustic" "=" ((toInteger 1):[]) Strict)  testdb
> :t a 
a :: IO [[SqlValue]]

所以,我想确保a是一个长度恰好为6(IO 6然后)的列表。

> fmap length a
6

检查此内容的testCase会是什么样的?

1 个答案:

答案 0 :(得分:1)

对不起,解决方案并不复杂(我只是设法让它变得复杂)。

ucg :: TestTree
ucg = testGroup "selectByCount" 
    [ testCase "2 Words dominated by exactly 1 Acoustic" $ do 
        r <- fmap length  $ tRunUmeQuery (selectByCount "Word" "Acoustic" "=" ((toInteger 1):[]) Strict) testdb  
        assertEqual "selectByCount: 1 Acoustic in Word" 6 r
    ]

这个TestGroup工作正常。