问题标签 [hspec]

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 投票
1 回答
111 浏览

haskell - 测试 wai 应用程序的状态更新

我有一个在Wai之上编写的应用程序,配置为具有一些自定义状态并且可以使用Test.Hspec.Wai进行测试。

我可以测试请求/响应交互,但我无法弄清楚如何测试状态变化;具体来说,如果我的应用程序状态是 a TVar Text,我如何在测试中从中获取值,以验证其值?


*) 请注意,getState我这里所说的方法在撰写本文时并未在最新的 LTS 中导出;添加 hspec-wai-0.10.1 以extra-deps获得具有此处提到的所有功能的版本。

0 投票
1 回答
221 浏览

unit-testing - 当测试文件被定义为模块时,使用堆栈调用的 hspec 定义的测试会引发错误

我试图弄清楚为什么包含被定义为模块的单元测试的测试文件在使用stack build --test.

假设有一个从头开始定义的简单测试模块:

按照 Hspec 文档中的“入门”说明,我修改了以下文件:

第 1 步:描述您想要的行为

第 2 步:编写一些代码

运行stack build --test会抛出以下错误:

当我从文件中注释掉“模块定义”行时,test/Spec.hs构建成功并且单元测试通过:

是 Hspec 相关还是 Stack 相关?或者,也许我错过了一些明显的东西?

0 投票
1 回答
811 浏览

haskell - 在 Haskell 中开始使用 HSpec 和 Tasty?

我是 Haskell 的新手,我正在尝试让hspecTasty一起工作(使用taste-hspec)和Stack。我已经看到一个使用HUnit的示例,如下所示:

但我不想使用 hunit、smallcheck 或 quickcheck,而是使用 hspec。我尝试了以下方法:

但这不会编译:

所以我的问题是,如何使我的 hspec 示例与美味一起使用?

0 投票
0 回答
112 浏览

haskell - 如何使用 HSpec 集成/提升/注入自定义 monad 堆栈?

语境

我有一些我试图用 HSpec 测试的解释器的单子函数。它们使用以下 monad 堆栈运行:

这是一个简单的例子:

问题是 HSpec 有自己的上下文 ( IO ()),所以我必须在两个上下文之间进行翻译。

当前方法

我正在使用 HSpec,我编写了一个转换器函数来runApp从 HSpec 上下文中获取上下文。

所以我的Spec样子是这样的:

问题

这是我能做的最好的吗?我觉得run extract $ do很好,而且我认为当事情复杂时,明确表达是件好事。

但是我想知道是否有一种方法可以与 HSpec 集成,或者是否有不需要自定义代码来解决这个问题的最佳实践?

0 投票
0 回答
305 浏览

haskell - Haskell:如何使用 Tasty 和 Hspec 测试提升函数引发的断言异常

我仍然是 Haskell 的初学者。我通过尝试来学得最好,但有时我觉得我错过了一些基本的东西。这是其中之一。

我有一些调用Control.Exception.assert的代码,但没有抛出断言异常。我将此追踪到默认情况下被忽略的断言(这是不寻常的,因为文档建议相反),所以我将其添加到我的package.yaml

我没有使用-O1or所以我不知道为什么默认行为是忽略-O2,但这不是这个问题的真正含义。-fignore-assertsassert

我想编写一个 Hspec 单元测试来检查这种行为(同时也是一个了解 Hspec 的机会)。

在我的Lib模块中:

这个模块是用-fno-ignore-asserts.

在我的Spec.hs(我实际上是在使用 Tasty 来主持测试):

此测试模块未使用-fno-ignore-asserts. 我认为这没关系,因为它实际上并没有调用assert自己,它只是调用模块中的函数checkAssert,该函数使用该标志编译的。Lib

我遇到的问题实际上与如何从 Monad 调用非单子函数有关,例如Spec. 根据我的阅读,我可以使用fmapliftM调用非单子函数,例如checkAssert- 但我无法编译:

有人可以解释一下我在哪里出错了吗?

注意:我意识到Test.HUnit.ToolshasassertRaises并且我最初尝试使用它,但Test.Tasty.HUnit由于某种原因不包含此功能。

0 投票
0 回答
38 浏览

unit-testing - 使用 cabal 从测试包中导入测试 utils 模块

我有以下项目结构:

我想从and导入Utils模块,遗憾的是默认情况下这似乎是不可能的。我也尝试在我的 cabal 文件中创建第二个部分,但我不能依赖它。我应该如何在我的 cabal 文件中表达这一点?ASpecBSpeclibrary

0 投票
1 回答
74 浏览

haskell - Hspec - Haskell 中的快照测试?

是否有内置的可能性在 hspec 测试框架中创建快照测试?使用快照,我的意思是,可以将函数的输出与存储在文件中的预期输出进行比较。

或者是否有启用此功能的 hackage 包?

0 投票
1 回答
42 浏览

haskell - 简化 HSpec 中的不完整断言

我想对返回复杂嵌套数据结构的函数进行单元测试,但我只对该结构的某些字段感兴趣。例如:

是否有一种通用的方法可以在 HSpec 中断言上述形式的结果?也就是说,某种方式来写一个表达式

我不需要指定我不感兴趣的预期结果的那些部分?我找到了这个答案,它需要从 to 复制所有无关字段;这可能会变得相当乏味。也许有使用镜头的标准方法?或者一些我没听说过的带有断言助手的库?resultexpectedResult

0 投票
1 回答
68 浏览

haskell - 使用 Hspec 编写嵌套断言

我正在努力用 HSpec 实现一个看似简单的测试问题:我想测试一个函数

在一个测试用例中,我想首先断言返回值是一个Right值,然后打开该值以断言其内容。如果没有繁琐的 case 表达式,我还没有想出一种方法来做到这一点。是否有同时允许模式匹配的断言运算符?

我正在寻找的是以下几行(伪Haskell):

这只是为了说明这个想法,当然,RHS 上的模式匹配不起作用。

0 投票
1 回答
27 浏览

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

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

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

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

我收到错误:

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

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

谢谢!