问题标签 [tasty]

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 回答
219 浏览

unit-testing - Haskell Tasty Unit Tests - 如何使用组和简单的固定装置来避免重复?

您将如何编写一个 Tasty HUnit 测试,该测试在单个测试中包含针对单个夹具变量的多个检查,或者至少是一组整洁的此类测试?

例如,考虑这个 Gherkin 规范:

我可以做这样的事情,但它非常重复:

我对此的担忧是我已经重复了三次场景名称,并且我还创建了三次夹具。我想找到一种方法将所有三个断言分组为一个标题为“A 3-Vector has x, y and z components”的组,并且只指定一次夹具 Vec。

我可以扩展测试规范以尽量减少一些描述重复,但如果可以的话,我宁愿坚持 Gherkin 规范:

我不知道为组定义一次 Vec 的方法。

我想做的是这样的(不是真正的代码!):

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

haskell - 在构建中包含美味快速检查的问题

我是新手。

我有一个堆栈项目,我想使用taste-quickcheck。当我添加tasty-quickcheck到 package.yaml 时,stack 会要求我将它添加到 stack.yaml 以及 extra-deps 部分下。添加tasty-quickcheck-0.10.1.1到 extra-deps 堆栈后,要求我向我添加的 extra-deps 添加大约十几个包。

现在我处于尝试执行以下错误的阶段stack build

我的 package.yaml 如下所示。

我的 stack.yaml 如下所示。

我有两个问题。

  1. 如何解决上述错误?
  2. 堆栈是否通常会告诉您添加十几个依赖项只是为了获得一个包,例如包含美味快速检查?这对我来说听起来不太好。这是大多数包裹的标准吗?
0 投票
1 回答
89 浏览

haskell - 使用来自 Tasty 的 Warp 的 `testWithApplication`

Tasty只有withResource功能来管理测试中的资源。

该函数将资源初始化和清理函数作为参数:

我正在尝试测试一个仆人应用程序,所以我想使用Warp.testWithApplication每个仆人的测试教程,但这是一个with*风格的函数(一个调用你的动作并为你管理资源的函数),即类型是:

考虑到我没有初始化程序/清理函数而是包装with...函数,我是否遗漏了一些东西,或者真的很难将两者粘合在一起?

笔记

我知道我可以用testWithApplication(in main) 包装整个测试套件,但如果 API 仅针对需要它的 TestTree 启动,我更愿意。