Tasty支持资源,因此我可以获取资源,测试与该资源有关的一些数据(完全)并释放该资源。但是如何在测试功能中执行一些IO操作?
这是文档中的示例:
import Test.Tasty
import Test.Tasty.HUnit
-- assumed defintions
data Foo
acquire :: IO Foo
release :: Foo -> IO ()
testWithFoo :: Foo -> Assertion
(acquire, release, testWithFoo) = undefined
main = do
defaultMain $
withResource acquire release tests
tests :: IO Foo -> TestTree
tests getResource =
testGroup "Tests"
[ testCase "x" $ getResource >>= testWithFoo
]
所以我的资源是一些连接(例如套接字)。而且我需要在testWithFoo
中进行API调用,因此它不能仅返回Assertion
,而必须返回IO
中。怎么做?还是只有纯测试支持美味?
答案 0 :(得分:1)
根据tasty-hunit documentation,Assertion
是IO ()
的类型同义词。
type Assertion = IO ()
这意味着您可以在测试内进行API调用而不会出现问题。