我有一个在Wai之上编写的应用程序,配置为具有一些自定义状态并且可以使用Test.Hspec.Wai进行测试。
我可以测试请求/响应交互,但我无法弄清楚如何测试状态变化;具体来说,如果我的应用程序状态是 a TVar Text
,我如何在测试中从中获取值,以验证其值?
-- app :: TVar Text -> IO Application
-- is defined in my application library
wrapp :: Text -> IO (TVar Text, Application)
wrapp s = do
s' <- newTVarIO s
a <- app s'
return (s', a)
spec :: Spec
spec = withState (wrapp "hello") $ do
describe "x" $ it "x" $ do
st <- getState -- st is TVar Text.
s <- undefined -- WHAT DO I PUT HERE TO GET THE STATE OUT OF TVar?
get "/" `shouldRespondWith` "\"hello, world!\""
s `shouldBe` "hello"
*) 请注意,getState
我这里所说的方法在撰写本文时并未在最新的 LTS 中导出;添加 hspec-wai-0.10.1 以extra-deps
获得具有此处提到的所有功能的版本。