问题标签 [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.
haskell - 将 HSpec 与堆栈一起使用
我有以下架构:
我的 .cabal 文件包含以下内容
但是当我这样做时
HSpec 找不到我的测试 int MessageSpec.hs。
在 0.0002 秒内完成 0 个示例,0 个失败
Spec.hs 是正确的输入:{-# OPTIONS_GHC -F -pgmF hspec-discover #-}
我的 MessageSpec 模块正在公开:模块 MessageSpec (main, spec)。
你能帮我找到一种方法让我的堆栈项目完成我的所有测试吗?
谢谢,
haskell - 如何在 Yesod 规范中执行待定规范
我是 Yesod 的新手,我正在尝试在一个withApp
块中添加一个待处理的规范(目前我只是想修改由 Yesod 脚手架生成的规范)。
代码如下:
appSpec :: Spec appSpec :: withApp $ do describe "getMyHandlerR" $ do it "todo" $ do pending
但我收到以下错误消息:
如果我删除withApp
一切正常。我知道withApp
以某种方式改变了预期的类型,但是为什么会有正确的类型而describe
没有呢?it
pending
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 个斐波那契数),并且还可以限制运行的测试数量吗?如果不是,上述链接中的解决方案是我必须采取的方法吗?
haskell - Scotty 与 Persistent 和 Hspec-wai
尝试对路线进行单元测试时出现问题。Scotty、Persistent 和 Hspec-WAI。
与 Yesod 或 Spock 不同,Scotty 没有存储数据库处理程序的好地方。我通过一个大规模的“做”来启动数据库,将数据库池保持为局部变量,然后使用该变量来实现它。
但是,Hspec-WAI 希望它在 IO 申请表中。
有没有一种理智的方法可以将数据库连接池注入 scottyApp ?
haskell - 在 HSpec 中比较两个相互递归的相等值会导致问题
1 背景
考虑下面的 Haskell 片段:
注意关于r1
是如何相互递归的r2
。AFAIK,这在 Haskell 中完全没问题(只要你不使用这两个值导致相互递归的调用循环永远不会终止)。例如,用户r2
可能希望f1 r1
通过f1 (f2 r2)
(在本例中为“val1”)访问该值。(事实上,这就是我尝试在自己的代码中使用这些类型的数据结构的方式。)
2 问题
现在考虑以下 HSpec 单元测试:
这会导致测试编译器停止一段时间,然后最终失败。 这是否意味着我的代码有问题,或者这只是shouldBe
定义方式的一个怪癖(我假设它检查相等性的方式不是懒惰的,并且涉及相互递归的非终止调用) ? 如果这只是 HSpecshouldBe
函数的一个怪癖,那么有没有办法检查相互递归值之间的相等性?我最终希望能够做的事情如下:
haskell - 在 HSpec 中设置测试套件
如何在 HSpec 中指定测试套件?我将为我*.hs
的每个模块创建多个测试文件,我只想运行stack test
并运行所有测试。我该如何设置?
我试图在我的 cabal 文件中列出这样的测试模块,但它不起作用:
haskell - 如何用 hspec 测试 readerError 函数是否被执行
我是 Haskell 的新手。
我编写了以下代码,它将解析发送到脚本的参数;
我想用 hspec 测试上面的“parseDb”函数。我想确保在指定未知数据库时会抛出“readerError”。因此,我想测试函数调用 parseDb "unknown" 生成一个 "readerError" 调用,根据我的说法,它应该引发异常。
我已经尝试了 hspec shouldThrow 函数,但它不起作用。似乎没有抛出异常。readerError 的返回类型是“ReadM a”。在花了几天时间阅读 monads 和 reader monads 之后,我仍然卡住(和困惑)并且不知道如何测试它,甚至不知道是否可以测试它。当我用谷歌搜索时,找不到任何相关的例子。
haskell - 分母为零或分子和分母都为零时如何除法运算符场景?
我正在尝试使用 HSpec 在 haskell 中进行 TDD。因此,在为除法运算符编写特殊情况时,例如:
3 / 0 => Infinity
0 / 0 => Nan
如何使用 Hspec 测试上述情况?
haskell - Haskell 管道和使用 HSpec 进行测试
我为一个使用 Pipes 的项目编写了一个程序,我喜欢它!但是,我正在努力对我的代码进行单元测试。
我有一系列类型的函数Pipe In Out IO ()
(例如),我希望用 HSpec 进行测试。我该怎么办?
例如,假设我有这个域:
和这个管道:
我想写一个规范:
haskell - 选择要使用 Hspec 和堆栈运行的测试
我使用Hspec的自动规范发现功能编写了一系列测试。我也使用堆栈作为我的构建工具。
我的测试目录包含该Spec.hs
文件,以及我的应用程序不同模块的测试文件(例如Module0Spec.hs
,Module1Spec.hs
)。
现在,当我开始编写新的测试模块时,或者当我想在代码更改后重新运行失败的测试时,我希望能够只运行给定的测试模块。
堆栈或 Hspec 是否允许这样做?