问题标签 [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 回答
2605 浏览

haskell - 将 HSpec 与堆栈一起使用

我有以下架构:


我的 .cabal 文件包含以下内容

但是当我这样做时

HSpec 找不到我的测试 int MessageSpec.hs。

在 0.0002 秒内完成 0 个示例,0 个失败

Spec.hs 是正确的输入:{-# OPTIONS_GHC -F -pgmF hspec-discover #-}

我的 MessageSpec 模块正在公开:模块 MessageSpec (main, spec)。

你能帮我找到一种方法让我的堆栈项目完成我的所有测试吗?

谢谢,

0 投票
2 回答
163 浏览

haskell - 如何在 Yesod 规范中执行待定规范

我是 Yesod 的新手,我正在尝试在一个withApp块中添加一个待处理的规范(目前我只是想修改由 Yesod 脚手架生成的规范)。

代码如下:

appSpec :: Spec appSpec :: withApp $ do describe "getMyHandlerR" $ do it "todo" $ do pending

但我收到以下错误消息:

如果我删除withApp一切正常。我知道withApp以某种方式改变了预期的类型,但是为什么会有正确的类型而describe没有呢?itpending

0 投票
1 回答
234 浏览

haskell - 控制如何在 QuickCheck 2 中生成测试数据

我有一个类似于这个问题Controlling how test data is generated in QuickCheck的问题。下面我将阐述我的具体情况、我正在使用的代码以及我遇到的特定问题。

我编写了一个使用斐波那契数列作为输入的 fizz-buzz 程序。我想测试两件事。(1) 我的程序是否在给定满足特定条件的 Int 的情况下发出正确的字符串。(2) 我的斐波那契生成器是否生成斐波那契数?

我遇到的问题类似于上面的链接。s的范围Int太大。我如何限制我的测试说前 1000 个斐波那契数字?

这是我认为既足够又最小的代码。如果我需要详细说明,请告诉我。

fibb取 anInt并找到第 n 个斐波那契。所以fibb 6会回来Right 8。该Left值与此问题无关。

我注意到的是答案建议人们应该编写 a newtype,包装 a[Int]并创建一个新Arbitrary实例。但是,我也注意到答案来自 2012 年,并且QuickCheck 2似乎Args datatype能够满足我的需求。那么,我可以创建一个新Args的来限制测试的范围(只需要前 1000 个斐波那契数),并且还可以限制运行的测试数量吗?如果不是,上述链接中的解决方案是我必须采取的方法吗?

整个项目在这里

0 投票
1 回答
329 浏览

haskell - Scotty 与 Persistent 和 Hspec-wai

尝试对路线进行单元测试时出现问题。Scotty、Persistent 和 Hspec-WAI。

与 Yesod 或 Spock 不同,Scotty 没有存储数据库处理程序的好地方。我通过一个大规模的“做”来启动数据库,将数据库池保持为局部变量,然后使用该变量来实现它。

但是,Hspec-WAI 希望它在 IO 申请表中。

有没有一种理智的方法可以将数据库连接池注入 scottyApp ?

0 投票
1 回答
88 浏览

haskell - 在 HSpec 中比较两个相互递归的相等值会导致问题

1 背景

考虑下面的 Haskell 片段:

注意关于r1是如何相互递归的r2。AFAIK,这在 Haskell 中完全没问题(只要你不使用这两个值导致相互递归的调用循环永远不会终止)。例如,用户r2可能希望f1 r1通过f1 (f2 r2)(在本例中为“val1”)访问该值。(事实上​​,这就是我尝试在自己的代码中使用这些类型的数据结构的方式。)

2 问题

现在考虑以下 HSpec 单元测试:

这会导致测试编译器停止一段时间,然后最终失败。 这是否意味着我的代码有问题,或者这只是shouldBe定义方式的一个怪癖(我假设它检查相等性的方式不是懒惰的,并且涉及相互递归的非终止调用) ? 如果这只是 HSpecshouldBe函数的一个怪癖,那么有没有办法检查相互递归值之间的相等性?我最终希望能够做的事情如下:

0 投票
1 回答
1168 浏览

haskell - 在 HSpec 中设置测试套件

如何在 HSpec 中指定测试套件?我将为我*.hs的每个模块创建多个测试文件,我只想运行stack test并运行所有测试。我该如何设置?

我试图在我的 cabal 文件中列出这样的测试模块,但它不起作用:

0 投票
1 回答
162 浏览

haskell - 如何用 hspec 测试 readerError 函数是否被执行

我是 Haskell 的新手。

我编写了以下代码,它将解析发送到脚本的参数;

我想用 hspec 测试上面的“parseDb”函数。我想确保在指定未知数据库时会抛出“readerError”。因此,我想测试函数调用 parseDb "unknown" 生成一个 "readerError" 调用,根据我的说法,它应该引发异常。

我已经尝试了 hspec shouldThrow 函数,但它不起作用。似乎没有抛出异常。readerError 的返回类型是“ReadM a”。在花了几天时间阅读 monads 和 reader monads 之后,我仍然卡住(和困惑)并且不知道如何测试它,甚至不知道是否可以测试它。当我用谷歌搜索时,找不到任何相关的例子。

0 投票
1 回答
80 浏览

haskell - 分母为零或分子和分母都为零时如何除法运算符场景?

我正在尝试使用 HSpec 在 haskell 中进行 TDD。因此,在为除法运算符编写特殊情况时,例如:

  • 3 / 0 => Infinity
  • 0 / 0 => Nan

如何使用 Hspec 测试上述情况?

0 投票
2 回答
257 浏览

haskell - Haskell 管道和使用 HSpec 进行测试

我为一个使用 Pipes 的项目编写了一个程序,我喜欢它!但是,我正在努力对我的代码进行单元测试。

我有一系列类型的函数Pipe In Out IO ()(例如),我希望用 HSpec 进行测试。我该怎么办?

例如,假设我有这个域:

和这个管道:

我想写一个规范:

0 投票
1 回答
1351 浏览

haskell - 选择要使用 Hspec 和堆栈运行的测试

我使用Hspec的自动规范发现功能编写了一系列测试。我也使用堆栈作为我的构建工具。

我的测试目录包含该Spec.hs文件,以及我的应用程序不同模块的测试文件(例如Module0Spec.hsModule1Spec.hs)。

现在,当我开始编写新的测试模块时,或者当我想在代码更改后重新运行失败的测试时,我希望能够只运行给定的测试模块。

堆栈或 Hspec 是否允许这样做?