问题标签 [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.

0 投票
0 回答
97 浏览

haskell - 在 Yesod.Test 中,是否可以从 `IO` 进入`SpecM (TestApp site)`,类似于`liftIO` 允许相反的情况?

更具体地说,我正在寻找一个类型的函数:

或类似的。

换句话说,我正在寻找的反函数:

我查看了Yesod.Test 文档源代码并尝试自己构建它,但我似乎在任何地方都找不到它,而且构建起来似乎也不简单。我是否忽略了某些东西,它可能存在于某个地方?还是以我没有考虑过的方式构建起来很简单?

背景

我多次遇到需要这样的功能,但到目前为止,我总是能够解决或不做。但在我最近的情况下,它似乎无法解决:我想编写一个 Monadic QuickCheck 属性,它可以设置一个任意的数据库环境 ( runDB . insert) 并在其上运行一些处理程序来测试我的应用程序的某些不变量。

这是我尝试的最远距离:

可以理解的是,这会导致以下类型错误:

有任何想法吗?

另外,之前有没有人Test.QuickCheck.Monadic成功使用过Yesod.Test?或者,如果可能没有成功,至少尝试过这样做?

0 投票
1 回答
74 浏览

json - 使用 Yesod.Test 断言 json 匹配

我不想从我的 yesod 应用程序中获取资源并断言它与已知的 JSON 值匹配。

我可以看到里面有类型Yesod.Test.Json的函数assertJSON

但是没有示例用法,我无法仅从类型中弄清楚如何使用它。

我如何能够检查从我的 yesod 应用程序返回的 JSON 是否匹配?

0 投票
1 回答
72 浏览

haskell - 无法将预期类型 'Post' 与实际类型 'Route App' 匹配

我正在尝试使用该功能postBody

来自Yesod.Test包。文档说可以这样使用

但是,当我尝试在我的应用程序中使用它时

我得到了错误

我的用法似乎与示例相同,所以我看不出它为什么会失败。

PostR 在此处的路由文件中

/posts PostR POST

和它的处理程序

0 投票
1 回答
143 浏览

haskell - Yesod.Test 中的 ydescribe 如何使用?

我正在尝试编写一个测试登录的测试,然后以下测试使用第一个登录测试中的 cookie 集。

据我所知,这是完成的ydescribe

开始描述一个保存 cookie 的测试套件以及对测试的 Application 和 ConnectionPool 的引用

我试图通过查看 github repos 中的一些示例在我的应用程序中使用它,但没有运气。

这是我的代码:

编译时会出现错误:

使用 ydescribe 的正确方法是什么?

0 投票
2 回答
129 浏览

haskell - 在 yesod 测试中运行 db 操作

在我的 yesod 测试中,我希望能够在测试中间修改数据库中的记录。

这是我想出的代码

这失败并出现错误

我可以说这是因为update返回m ()而不是YesodExample site ()喜欢requestpostBody并且statusIs做。

我怎样才能在这个测试中进行数据库更新?

0 投票
1 回答
27 浏览

haskell - 如何将 Hspec/Yesod.Test 与 Sqlite 一起使用?

我有一个使用 Sqlite 数据库的基本 Yesod 服务器,我正在尝试向它添加测试。我对 Haskell 很陌生,所以我什至在努力寻找正确的术语,所以对我来说很简单。

我有这个代码来运行服务器:

现在我正在尝试使用yesodSpecWithSiteGeneratoryesodSpecWithSiteGeneratorAndArgument创建我的Spec. 像这样的东西:

我收到错误:

而且我不确定该怎么做。我一直在尝试不同的事情,但在这一点上,我真的只是在黑暗中拍摄。

有人知道怎么做吗?您需要额外的信息吗?

谢谢!

0 投票
1 回答
69 浏览

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测试时运行良好。

所以内存中的数据库在某个地方丢失了。但我不确定如何防止这种情况。

我该如何解决这个问题?所以我可以使用内存数据库进行测试吗?

谢谢!