测试wai应用程序的状态更新



我有一个在Wai之上编写的应用程序,配置为具有一些自定义状态,并且可以使用Test.Hspec.Wai.进行测试

我可以测试请求/响应交互,但我还不知道如何测试状态更改;具体地说,如果我的应用程序状态是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中,以获得具有此处提到的所有功能的版本

我认为问题是您忘记了将整个spec封装到with app中,就像在hspec-wai的README:中所做的那样

spec :: Spec
spec = with app $ do
describe "GET /" $ do
it "responds with 200" $ do
get "/" `shouldRespondWith` 200

相关内容

  • 没有找到相关文章

最新更新