次のScottyエンドポイントを使用します。
myendpoint :: Text -> ScottyM ()
myendpoint info =
post "/foo/bar/:var" $ do
var :: Text <- param "var"
query :: Query <- jsonData
result <- liftIO $ retrieveResult info var query
json $ result
runApi :: IO ()
runApi = scotty 4602 $ do
myendpoint
myendpoint
たとえば、さまざまな可能な入力でテストする方法
info1 = "foo"
query1 = Query { qParam1 = "foo", qParam2 = "bar" }
var1 = "bar"
expect1 = Result { foo = "foo", bar = "bar" }
res1 = decode $ test_myendpoint info1 query1 var1
res1 `shouldBe` expect1
info2 = "baz"
query2 = Query { qParam1 = "hello", qParam2 = "there" }
var2 = "boo"
expect2 = Result { foo = "biz", bar = "dev" }
res2 = decode $ test_myendpoint info2 query2 var2
res2 `shouldBe` expect2
API を別のスレッドで単純に実行してから、JSON を使用して実際にエンドポイントをクエリしたくなるのですが、これを行うためのよりクリーンな方法はありますか? (ただし、上記の利点は実際のエンドツーエンドのテストになります)