问题标签 [yesod-test]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
haskell - 在 Yesod.Test 中,是否可以从 `IO` 进入`SpecM (TestApp site)`,类似于`liftIO` 允许相反的情况?
更具体地说,我正在寻找一个类型的函数:
或类似的。
换句话说,我正在寻找的反函数:
我查看了Yesod.Test
文档和源代码并尝试自己构建它,但我似乎在任何地方都找不到它,而且构建起来似乎也不简单。我是否忽略了某些东西,它可能存在于某个地方?还是以我没有考虑过的方式构建起来很简单?
背景
我多次遇到需要这样的功能,但到目前为止,我总是能够解决或不做。但在我最近的情况下,它似乎无法解决:我想编写一个 Monadic QuickCheck 属性,它可以设置一个任意的数据库环境 ( runDB . insert
) 并在其上运行一些处理程序来测试我的应用程序的某些不变量。
这是我尝试的最远距离:
可以理解的是,这会导致以下类型错误:
有任何想法吗?
另外,之前有没有人Test.QuickCheck.Monadic
成功使用过Yesod.Test
?或者,如果可能没有成功,至少尝试过这样做?
json - 使用 Yesod.Test 断言 json 匹配
我不想从我的 yesod 应用程序中获取资源并断言它与已知的 JSON 值匹配。
我可以看到里面有类型Yesod.Test.Json
的函数assertJSON
但是没有示例用法,我无法仅从类型中弄清楚如何使用它。
我如何能够检查从我的 yesod 应用程序返回的 JSON 是否匹配?
haskell - 无法将预期类型 'Post' 与实际类型 'Route App' 匹配
我正在尝试使用该功能postBody
来自Yesod.Test包。文档说可以这样使用
但是,当我尝试在我的应用程序中使用它时
我得到了错误
我的用法似乎与示例相同,所以我看不出它为什么会失败。
PostR 在此处的路由文件中
/posts PostR POST
和它的处理程序
haskell - Yesod.Test 中的 ydescribe 如何使用?
我正在尝试编写一个测试登录的测试,然后以下测试使用第一个登录测试中的 cookie 集。
据我所知,这是完成的ydescribe
开始描述一个保存 cookie 的测试套件以及对测试的 Application 和 ConnectionPool 的引用
我试图通过查看 github repos 中的一些示例在我的应用程序中使用它,但没有运气。
这是我的代码:
编译时会出现错误:
使用 ydescribe 的正确方法是什么?
haskell - 在 yesod 测试中运行 db 操作
在我的 yesod 测试中,我希望能够在测试中间修改数据库中的记录。
这是我想出的代码
这失败并出现错误
我可以说这是因为update
返回m ()
而不是YesodExample site ()
喜欢request
,postBody
并且statusIs
做。
我怎样才能在这个测试中进行数据库更新?
haskell - 如何将 Hspec/Yesod.Test 与 Sqlite 一起使用?
我有一个使用 Sqlite 数据库的基本 Yesod 服务器,我正在尝试向它添加测试。我对 Haskell 很陌生,所以我什至在努力寻找正确的术语,所以对我来说很简单。
我有这个代码来运行服务器:
现在我正在尝试使用yesodSpecWithSiteGenerator
或yesodSpecWithSiteGeneratorAndArgument
创建我的Spec
. 像这样的东西:
我收到错误:
而且我不确定该怎么做。我一直在尝试不同的事情,但在这一点上,我真的只是在黑暗中拍摄。
有人知道怎么做吗?您需要额外的信息吗?
谢谢!
sqlite - Haskell:在 Yesod 测试中使用内存中的 sqlite db?
我正在尝试制作我的第一个 Yesod 网站,现在正在添加测试。
我是这样设置的:
并进行一些测试:
当我运行时,我收到以下错误:
11/Jun/2021:14:52:15 +0200 [Error#yesod-core] SQLite3 returned ErrorError while attempting to perform prepare "SELECT \"id\",\"long\" FROM \"url\" WHERE \"long\"=?": no such table: url @(yesod-core-1.6.18-Ab7hNtiUzJgGsCLpKcpJyh:Yesod.Core.Class.Yesod src/Yesod/Core/Class/Yesod.hs:688:5)
但是,当我更改:memory:
为test.db
测试时运行良好。
所以内存中的数据库在某个地方丢失了。但我不确定如何防止这种情况。
我该如何解决这个问题?所以我可以使用内存数据库进行测试吗?
谢谢!