问题标签 [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 投票
2 回答
480 浏览

haskell - Haskell - 断言一个函数被调用

是否可以验证在 Haskell HSpec 中调用了一个函数?

假设我有两个函数foobar可以转换我的数据。

而且我有一个函数, 它根据它是否收到'f'或'b'作为第二个参数并返回应用函数的结果,在Stuff上应用foobar 。

在我的测试中,我已经全面测试了每个函数 foo 和 bar ,我不想在apply中测试它们的效果。

我可以验证是否调用了函数 foo 或 bar 吗?取决于传递给应用的参数是什么?

0 投票
1 回答
313 浏览

haskell - Cabal 测试为 Haskell 产生错误

我的Main.hs文件接受命令行参数:

效果很好,除非我尝试测试。我的测试文件是

然而,当我跑步时cabal test,它仍然给我

我很确定它失败是因为调用argsin Main.main,因为可执行文件本身工作正常,而且我看不到!!在其他任何地方使用。

如何让测试运行?

编辑:使用的模式匹配Main.hs

现在的错误是

编辑 2:我的整个grade.cabal文件

0 投票
2 回答
360 浏览

haskell - 如何轻松表达我不关心特定数据字段的值?

我正在为我的解析器编写测试,使用的方法可能不是最好的,但到目前为止一直在为我工作。测试假设每个代码块都完美定义了 AST 表示,如下所示:

然而,当我转向更复杂的案例时,需要进行更“模糊”的验证:

undefined在这个示例中放入了我不想与解析结果进行比较的字段(它是字符串文字的源位置)。现在我看到的唯一修复方法是重写代码以使用shouldSatisfy而不是shouldBe,如果我找不到任何其他解决方案,我将不得不这样做。

0 投票
0 回答
383 浏览

haskell - 如何在我的 Yesod 应用程序中运行单个测试?

Yesod提供了yesod test工具。测试是Spec可以由 执行的类型的值hspec

脚手架带有一个预定义的规范,在tests/HomeTest.hs该规范中显式调用tests/main.hs,该文件显然是在您运行时编译和执行的yesod test。我假设您应该在main.hs创建它们时手动添加所有规范,尽管也许有一种方法可以使用 hspec 的自动测试发现

这对于回归测试非常有用,但是测试驱动开发呢?编写单个测试然后在开发过程中重复运行它的正确方法是什么?的帮助文本yesod test表明没有办法做到这一点:

直接运行一个规范文件是行不通的(我想你不会期望它,因为它不包含main定义):

我不确定为什么我的项目的可执行文件被禁用。我应该改变它吗?或者我应该创建一个临时副本main.hs并注释掉所有其他测试?什么是最干净的解决方案?

0 投票
1 回答
881 浏览

haskell - 使用 HSpec 和 QuickCheck 验证 Data.Monoid 属性

我正在尝试使用 HSpec 和 QuickCheck 来验证 Monoids 的属性(关联性和标识元素)。我将验证特定实例,但希望保持大部分代码多态。这是我几个小时后想出的:

我想要的是多态的

并稍后指定实际的 Monoid 实例(Sum、Product)和类型(Int、Double)。问题是它不会进行类型检查。我不断得到

我知道我需要将多态版本中的 Monoid 约束为 Arbitrary、Eq 和 Show,但我不知道如何。

问题是如何以多态的方式表达 Monoid 的规范并避免代码重复?

0 投票
1 回答
1121 浏览

haskell - 没有因使用“shouldBe”而产生 (Show a0) 的实例

我是haskell的新手,我正在尝试同时学习hspec

尽管其余的测试都通过了,但对 0 元素的测试却失败了。

当我在 ghci 中尝试时,它工作正常。

有人能帮我吗?

0 投票
1 回答
398 浏览

unit-testing - 单元测试主要功能:导入自身错误

我正在尝试编写一个(小)可执行文件,使用 Cabal 进行设置,使用 HSpec 进行单元测试。几乎我所有的代码都在一个单独的模块中Library,包括的主体,我将其作为函数main导入到我的主模块中run

虽然这个main函数现在和我想的一样短,但有没有办法可以为它编写一个测试,比如检查它是否等于 run 函数,或者以其他方式测试它?问题是我的规范文件定义了另一个Main模块,我似乎无法(或者至少我不知道如何)从另一个Main模块将任何内容导入其中。

例如,如果我尝试以下

然后我得到错误:

有没有办法测试主要功能?

0 投票
1 回答
286 浏览

haskell - 从 Cabal 向 HSpec 提供选项

我正在尝试开始使用 hspec。我有一个使用 QuickCheck 的工作案例,但我只想在运行cabal test. 我从 hspec 中找到了这篇文章,给出了在运行可执行文件时提供一些更详细控制的说明。我目前正在使用hi初始化我的 haskell 包,所以我的 cabal 测试套件如下所示:

我的猜测类似于“默认命令行参数”,但这感觉不对。我如何为 hspec 套件提供参数?

此外,这可能很重要。hi拆分测试套件,以便其中的唯一内容Spec.hs是:

但所有测试和代码都驻留在 中test/MainSpec.hs,其中导出mainspec.

0 投票
0 回答
162 浏览

unit-testing - 使用 Yesod 将更多值传递给 hspec 测试用例

我正在尝试通过将不仅仅是基础(类型App)传递到 hspec 测试用例来增强我当前的测试装置。在下面的示例中,我在元组(as IO (App, Text))中传递了一个额外的 Text 值,而不是直接返回IO App

我无法弄清楚如何正确地构建innerSpec这样一种方式,即我可以使用 等功能进行正常的 Yesod 测试poststatusIs但也Text可以让这些规格可供阅读。

如果没有 Yesod,我可以按照以下方式做一些事情:

它会构建得很好,但是一旦 Yesod 进入组合,我就不能完全正确地得到类型。建议?

0 投票
1 回答
107 浏览

haskell - 如何告诉 HSpec 在哪里寻找要测试的源文件

我是 Haskell 的新手,我想在我的第一个项目中添加测试。为此,我选择了 HSpec。到目前为止,我唯一的规范文件不包含任何特殊内容。我刚刚从 HSpec 网站复制了示例,并import为我自己的模块添加了要测试的语句。当我尝试通过它运行它时,runhaskell test/XSpec.hs它抱怨它“找不到模块 X”。我如何告诉它在抱怨之前应该查看的加载路径?