我正在使用yesod-sqlite模板并尝试在测试中使用get
中的Database.Persist
函数。
这是我的代码:
[Entity _ task] <- runDB $ selectList [TaskName ==. name] []
...
user <- runDB $ X.get (taskUserId task)
我得到的错误:
my_project/test/Handler/TaskSpec.hs:47:29: error:
Not in scope: ‘X.get’
No module named ‘X’ is imported.
在TestImport.hs
文件中,我看到了这一行:
import Database.Persist as X hiding (get)
根据我的理解,它应该隐藏HSpec模块中的get
函数,因此我可以使用X.get
进行数据库检索。我还尝试使用Database.Persist.get
和get
,结果相同。
所以我怀疑:TestImport.hs
中的那一行是做什么的?
答案 0 :(得分:4)
导入行正在导入Database.Persist
模块中的所有内容,但 get
除外,可选择限定。
如果我理解正确并且您想要导入仅 get
限定,并且其他所有内容都不合格,您可以使用:
import Database.Persist hiding (get)
import qualified Database.Persist as X (get)