1

我正在尝试通过将不仅仅是基础(类型App)传递到 hspec 测试用例来增强我当前的测试装置。在下面的示例中,我在元组(as IO (App, Text))中传递了一个额外的 Text 值,而不是直接返回IO App

beforeOp :: IO (App, Text)
beforeOp = do
  settings <- loadAppSettings
    ["config/test-settings.yml", "config/settings.yml"]
    []
    ignoreEnv
  foundation <- makeFoundation settings
  wipeDB foundation
  setUpFixtures foundation
  return (foundation, "foo")

innerSpec :: SpecWith (App, Text)
innerSpec = do
  describe "stuff" $ do
    it "should work" $ do
      post MyRouteR
      statusIs 403

spec :: Spec
spec = before beforeOp innerSpec

我无法弄清楚如何正确地构建innerSpec这样一种方式,即我可以使用 等功能进行正常的 Yesod 测试poststatusIs但也Text可以让这些规格可供阅读。

如果没有 Yesod,我可以按照以下方式做一些事情:

innerSpec :: SpecWith (Int, Int)
innerSpec = do
  describe "stuff" $ do
    it "should work" $ \(x, y) -> do
      x `shouldBe` y

它会构建得很好,但是一旦 Yesod 进入组合,我就不能完全正确地得到类型。建议?

4

0 回答 0