我一直在关注yesod教程,我仍然坚持如何构建一个涉及参数的单元测试,该视图也会打到数据库.回溯一点,我按照Echo.hs示例:
getEchoR :: Text -> Handler Html
getEchoR theText = do
defaultLayout $ do
$(widgetFile "echo")
Run Code Online (Sandbox Code Playgroud)
相应的测试,注意我必须使用Data.Text.pack将参数转换为Text
yit "Echo some text" $ do
get $ EchoR $ pack "Hello"
statusIs 200
Run Code Online (Sandbox Code Playgroud)
现在我的模型定义如下:
Tag
name Text
type Text
Run Code Online (Sandbox Code Playgroud)
使用可以呈现的处理程序显然需要TagId作为参数
getTagR :: TagId -> Handler Html
getTagR tagId = do
tag <- runDB $ get404 tagId
defaultLayout $ do
setTitle $ toHtml $ tagName tag
$(widgetFile "tag")
Run Code Online (Sandbox Code Playgroud)
这是测试失败的地方.
yit "Get a tag" $ do
-- tagId is undefined
get $ TagR tagId
statusIs 200
Run Code Online (Sandbox Code Playgroud)
我不知道如何定义tagId.它不适用于String或Text或Num,我似乎无法弄清楚如何生成一个,因为我在各种Data.Persist教程中找不到任何示例代码.或者更好的是,还有其他方法可以调用该get方法.
您希望使用Key数据构造函数来构造ID值,该值将a PersistValue作为参数.创建一个的简单示例是:
Key $ PersistInt64 5
Run Code Online (Sandbox Code Playgroud)
另一个选择是get使用文本URL 调用,例如get ("/tag/5" :: Text).
| 归档时间: |
|
| 查看次数: |
174 次 |
| 最近记录: |