问题标签 [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.
scala - 在 ScalaTest 中使用“不应该产生 [异常]”语法
我正在使用 Scala 中的 BDD 的 Specs2 和 ScalaTest。当我断言不应该抛出给定的异常时,我已经在 Specs2 中写下了期望。
我希望能够在 ScalaTest 中编写等效的代码,例如:
但这不会编译,我找不到这样做的方法。这甚至可能吗?
提前谢谢了。
scala - Mockito 不同的范围期望
我在scala代码中使用Mockito作为Specs的一部分,我偶然发现了以下任务:
给定一个模拟棋盘的ArrayBuffer(8x8 = 64个单元格)。如果我们查询ArrayBuffer
不存在的单元格(编号大于 63 或小于 0),我们应该收到None
. 否则我们返回Some(0)
(在几乎所有情况下)或Some(1)
(仅在几个指定的单元格中)。
现在我正在考虑间谍和一些类似的东西:
然后用 Some(1) 明确地重新指定单元格。
但是应该返回的越界单元格None
呢?
有没有一种最简单自然的方法来实现这种模拟?
scala - Scala、Specs2、Mockito 和 null 返回值
我正在尝试使用 Specs2 和 Mockito 测试一些 Scala 代码。我对这三个人都比较陌生,并且对返回 null 的模拟方法有困难。
在以下(转录有一些名称更改)
“将文件传递给解析器”一直有效,直到我在 SUT 中添加了翻译器调用,然后因为该mockParser.parse
方法返回了一个 null,而翻译器代码不能接受这个 null。
同样,“将解析结果传递给 Translator”直到我尝试在 SUT 中使用翻译结果。
这两种方法的真实代码永远不会返回 null,但我不知道如何告诉 Mockito 让期望返回可用的结果。
我当然可以通过在 SUT 中进行空检查来解决这个问题,但我宁愿不这样做,因为我确保永远不会返回空值,而是使用Option
,None
和Some
.
指向一个好的 Scala/Specs2/Mockito 教程的指针会很棒,还有一个简单的例子来说明如何改变一行
当它不处理空值时,使其返回允许在 SUT 中继续执行的东西。
试图弄清楚这一点,我试图将那条线改为
myResult 的值是我想要返回的类型。这给了我一个编译错误,因为它希望在MatchResult
那里找到一个而不是我的返回类型。
如果重要的话,我使用的是 Scala 2.9.0。
scala - 片段评估错误
有人能告诉我“片段评估错误”是什么意思,或者我可以在哪里寻找解决方案吗?我有时(但并非总是)得到很多这些错误(不改变我的代码):
PostSpec 的第 68 行是 (specs2) 测试中引用 Post 模型伴随对象的第一行:
我正在使用 Scala 2.9.0-1。
另外:我不知道这是否重要,但 Post 是 net.liftweb.mongodb.record.MongoRecord 类伴生对象:
scala - 以模块化方式创建 Specs2 匹配器
我有功能A => Double
。我想检查两个这样的函数beCloseTo
对于给定的一组值是否给出相同的结果(最大容差,使用现有的匹配器)。
我希望能够写:
我想以模块化的方式构建这个匹配器,而不是简单地Matcher[TF]
从头开始编写。
如果我能写的话可能会更好:
当匹配器失败时,我也想得到一个合理的描述。
编辑
在睡过它之后,我想出了以下内容。
这比 Eric 的解决方案要短得多,但没有提供好的失败消息。我希望能够在第二种方法中重命名映射值。类似于以下内容(无法编译)。
scala - Specs2:如何将 Seq[Matcher[A]] 变成单个 Matcher[A]?
给定一个序列Seq[Matcher[A]]
,我想获得一个Matcher[A]
在序列内的所有匹配器都成功时成功的单个序列。
编辑
我自己提供的答案似乎有点笨拙,此外,如果该序列的所有失败匹配器都产生结果,那就太好了
java - Scala 的 BDD 工具,支持可重用的参数化 Gherkin 子句
Scala 是否有任何 BDD 工具支持可重用的参数化 Gherkin 子句?
我希望能够使用以下规格:
而且我想为 Gherkin 子句定义仅一次参数不同的固定装置,例如:
给定子句的定义如下所示:
我查看了 ScalaTest 和 Specs 手册,但没有找到这样的功能。ScalaTest 似乎能够在不同的场景中重用定义的子句,但看起来它没有参数化。
你知道一些支持我想要的工具,或者例如ScalaTest的一些扩展,或者用这种结果自己扩展它的方法吗?
scala - 如何指示 sbt 0.11.x 哪些源文件包含测试
我是 Scala、SBT 和 Specs 的新手。我使用规范创建了一个简单的规范,并喜欢通过 SBT 使用“测试”任务运行它。当我执行该任务时,我收到以下错误:
我知道我必须告诉 SBT 我的哪些文件是测试文件。我在 SBT 主页和 Stackoverflow 上找到的唯一示例就是这段代码
我包含在我的 Build.scala 文件中。然而,这似乎不再适用于 SBT 0.11.x。我收到以下编译错误
有人知道新的 SBT 版本是如何做到的吗?
在此先感谢您的帮助!
干杯,乔治
unit-testing - Scala 规范单元测试
我有以下课程,我想编写一些 Spec 测试用例,但我对它真的很陌生,我不知道如何开始。我的班级确实像这样:
谢谢!
scala - Specs 隐式转换与 Scala Predef 冲突
我的代码中有一个类型别名,如下所示:
而且我经常在测试和应用程序中将 Long 值传递给使用这种类型的函数。例如:
除非在我收到以下错误的测试中运行,否则此代码可以正常工作:
查找后,NumericBaseMatchers
它似乎是 Specs 测试框架的一部分(我的测试是在 Specs 1 中编写的)。我尝试运行代码以在解释器中获取错误,并且在测试之外很好。
有什么办法可以消除歧义,以便将 Long 值传递给 Double/Time 函数?为什么 Specs 尝试创建自己的 LongToDouble 转换,而 Scala 已经提供了这种转换?