问题标签 [specs]

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

scala - 在 ScalaTest 中使用“不应该产生 [异常]”语法

我正在使用 Scala 中的 BDD 的 Specs2 和 ScalaTest。当我断言不应该抛出给定的异常时,我已经在 Specs2 中写下了期望。

我希望能够在 ScalaTest 中编写等效的代码,例如:

但这不会编译,我找不到这样做的方法。这甚至可能吗?

提前谢谢了。

0 投票
1 回答
307 浏览

scala - Mockito 不同的范围期望

我在scala代码中使用Mockito作为Specs的一部分,我偶然发现了以下任务:
给定一个模拟棋盘的ArrayBuffer(8x8 = 64个单元格)。如果我们查询ArrayBuffer不存在的单元格(编号大于 63 或小于 0),我们应该收到None. 否则我们返回Some(0)(在几乎所有情况下)或Some(1)(仅在几个指定的单元格中)。

现在我正在考虑间谍和一些类似的东西:

然后用 Some(1) 明确地重新指定单元格。
但是应该返回的越界单元格None呢?

有没有一种最简单自然的方法来实现这种模拟?

0 投票
3 回答
6321 浏览

scala - Scala、Specs2、Mockito 和 null 返回值

我正在尝试使用 Specs2 和 Mockito 测试一些 Scala 代码。我对这三个人都比较陌生,并且对返回 null 的模拟方法有困难。

在以下(转录有一些名称更改)

“将文件传递给解析器”一直有效,直到我在 SUT 中添加了翻译器调用,然后因为该mockParser.parse方法返回了一个 null,而翻译器代码不能接受这个 null。

同样,“将解析结果传递给 Translator”直到我尝试在 SUT 中使用翻译结果。

这两种方法的真实代码永远不会返回 null,但我不知道如何告诉 Mockito 让期望返回可用的结果。

我当然可以通过在 SUT 中进行空检查来解决这个问题,但我宁愿不这样做,因为我确保永远不会返回空值,而是使用Option,NoneSome.

指向一个好的 Scala/Specs2/Mockito 教程的指针会很棒,还有一个简单的例子来说明如何改变一行

当它不处理空值时,使其返回允许在 SUT 中继续执行的东西。

试图弄清楚这一点,我试图将那条线改为

myResult 的值是我想要返回的类型。这给了我一个编译错误,因为它希望在MatchResult那里找到一个而不是我的返回类型。

如果重要的话,我使用的是 Scala 2.9.0。

0 投票
1 回答
1004 浏览

scala - 片段评估错误

有人能告诉我“片段评估错误”是什么意思,或者我可以在哪里寻找解决方案吗?我有时(但并非总是)得到很多这些错误(不改变我的代码):

PostSpec 的第 68 行是 (specs2) 测试中引用 Post 模型伴随对象的第一行:

我正在使用 Scala 2.9.0-1。

另外:我不知道这是否重要,但 Post 是 net.liftweb.mongodb.record.MongoRecord 类伴生对象:

0 投票
1 回答
1128 浏览

scala - 以模块化方式创建 Specs2 匹配器

我有功能A => Double。我想检查两个这样的函数beCloseTo对于给定的一组值是否给出相同的结果(最大容差,使用现有的匹配器)。

我希望能够写:

我想以模块化的方式构建这个匹配器,而不是简单地Matcher[TF]从头开始编写。

如果我能写的话可能会更好:

当匹配器失败时,我也想得到一个合理的描述。

编辑

在睡过它之后,我想出了以下内容。

这比 Eric 的解决方案要短得多,但没有提供好的失败消息。我希望能够在第二种方法中重命名映射值。类似于以下内容(无法编译)。

0 投票
2 回答
549 浏览

scala - Specs2:如何将 Seq[Matcher[A]] 变成单个 Matcher[A]?

给定一个序列Seq[Matcher[A]],我想获得一个Matcher[A]在序列内的所有匹配器都成功时成功的单个序列。

编辑

我自己提供的答案似乎有点笨拙,此外,如果该序列的所有失败匹配器都产生结果,那就太好了

0 投票
1 回答
682 浏览

java - Scala 的 BDD 工具,支持可重用的参数化 Gherkin 子句

Scala 是否有任何 BDD 工具支持可重用的参数化 Gherkin 子句?

我希望能够使用以下规格:

而且我想为 Gherkin 子句定义仅一次参数不同的固定装置,例如:

给定子句的定义如下所示:

我查看了 ScalaTest 和 Specs 手册,但没有找到这样的功能。ScalaTest 似乎能够在不同的场景中重用定义的子句,但看起来它没有参数化。

你知道一些支持我想要的工具,或者例如ScalaTest的一些扩展,或者用这种结果自己扩展它的方法吗?

0 投票
1 回答
524 浏览

scala - 如何指示 sbt 0.11.x 哪些源文件包含测试

我是 Scala、SBT 和 Specs 的新手。我使用规范创建了一个简单的规范,并喜欢通过 SBT 使用“测试”任务运行它。当我执行该任务时,我收到以下错误:

我知道我必须告诉 SBT 我的哪些文件是测试文件。我在 SBT 主页和 Stackoverflow 上找到的唯一示例就是这段代码

我包含在我的 Build.scala 文件中。然而,这似乎不再适用于 SBT 0.11.x。我收到以下编译错误

有人知道新的 SBT 版本是如何做到的吗?

在此先感谢您的帮助!

干杯,乔治

0 投票
2 回答
1637 浏览

unit-testing - Scala 规范单元测试

我有以下课程,我想编写一些 Spec 测试用例,但我对它真的很陌生,我不知道如何开始。我的班级确实像这样:

谢谢!

0 投票
2 回答
327 浏览

scala - Specs 隐式转换与 Scala Predef 冲突

我的代码中有一个类型别名,如下所示:

而且我经常在测试和应用程序中将 Long 值传递给使用这种类型的函数。例如:

除非在我收到以下错误的测试中运行,否则此代码可以正常工作:

查找后,NumericBaseMatchers它似乎是 Specs 测试框架的一部分(我的测试是在 Specs 1 中编写的)。我尝试运行代码以在解释器中获取错误,并且在测试之外很好。

有什么办法可以消除歧义,以便将 Long 值传递给 Double/Time 函数?为什么 Specs 尝试创建自己的 LongToDouble 转换,而 Scala 已经提供了这种转换?