2016-05-14 9 views
1

ユニットテストルートを試す際に問題が発生しました。 Scotty、Persistent、およびHspec-WAIです。Scotty with PersistentおよびHspec-wai

YesodまたはSpockとは異なり、Scottyはデータベースハンドラを格納するのに適していません。私は、データベースを起動し、データベースプールをローカル変数として保持し、その変数を使用する大規模な「do」を持つことによって動作しています。

ただし、Hspec-WAIはIOアプリケーションフォームに入力します。

scottyApp :: ScottyM() -> IO Application 

DB接続プールをscottyAppに挿入するには元気な方法がありますか?

答えて

3

ここでその方法を説明します。 hspecに電話する前に、基本的にデータベースを開きます。

{-# LANGUAGE OverloadedStrings #-} 

import   Test.Hspec 
import   Test.Hspec.Wai 
import   Network.Wai (Application) 
import qualified Web.Scotty as S 

allocate_db :: (Int -> IO a) -> IO a 
allocate_db = undefined 

handleSomeRoute :: Int -> S.ScottyM() 
handleSomeRoute = undefined 

main2 :: IO() 
main2 = allocate_db $ \pool -> do 
    let app' = handleSomeRoute pool 
    hspec $ with (S.scottyApp app') $ do 
      describe "GET /" $ do 
       it "responds with 200" $ do 
       get "/" `shouldRespondWith` 200 
関連する問題