这是我得到的:
spec :: Spec
spec = do
manager <- runIO newManager
it "foo" $ do
-- code that uses manager
it "bar" $ do
-- code that usees manager
字符串runIO
的文档建议我可能应该使用beforeAll
,因为我不需要manager
来 * 构造 * spec树,我只需要它来 * 运行 * 每个测试,在我的用例中,它们最好共享同一个管理器,而不是为每个测试创建一个新的管理器。
如果您不需要IO操作的结果来构造规范树,那么beforeAll可能更适合您的用例。
beforeAll :: IO a -> SpecWith a -> Spec
型
但我不知道怎么通过测试进入管理器。
spec :: Spec
spec = beforeAll newManager go
go :: SpecWith Manager
go = do
it "foo" $ do
-- needs "manager" in scope
it "bar" $ do
-- needs "manager" in scope
型
1条答案
按热度按时间7gs2gvoe1#
Spec参数作为常规函数参数传递给it块(如果你想了解发生了什么,请查看
Example
类型类的关联类型)。一个完全自包含的例子是:字符串