问题标签 [specs2]

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

specs2 - ScalaCheck 选择无需替换

如何编写一个Gen[A]永远不会返回相同对象两次的使用 ScalaCheck?

可以重复选择同一个对象,所以这是行不通的。

我在 specs2 中编​​写了一个可变规范,我想这样做的原因是,在某种意义上,被测系统的行为应该只允许每个对象“使用”一次。

编辑:“相同”我的意思是根据 相同==,并且对象实际上是字符串,所以我不能每次都创建相同的字符串。

0 投票
2 回答
455 浏览

scala - 从 specs2 中失败的 Scalacheck 属性中识别完全失败的匹配

我正在运行一个 specs2 测试套件sbt,使用该test命令。当 ScalaCheck 属性失败时,我只会在我的代码中看到 specs2 匹配失败的文件名和行号——当它碰巧是一种实用方法时,它不是很有用,它执行我经常做的一种常见类型的检查. 堆栈跟踪会更好。

我已经last在 sbt 中尝试过该命令,但这并没有显示我正在寻找的堆栈跟踪。唯一的堆栈跟踪last显示是这个通用的:

我还在 java.util.logging 属性文件中启用了 FINEST 日志记录级别。

现在,我正在使用 Eclipse 调试器解决这个问题,但在某些情况下,它是不必要的重量级。

0 投票
1 回答
410 浏览

scala - scala specs2错误:匿名不等于scala.collection.immutable

我正在运行以下测试

我收到以下错误

这是我正在尝试测试的方法

我可以用这个丑陋的黑客解决它

但我确信有更好的方法来做到这一点......

- 编辑 -

对不起,这是我的一个愚蠢的错误(应该是 List("internet", "tecnologia") 代替)

无论如何,错误消息非常具有误导性,这就是我将这个问题留在这里的原因......

0 投票
5 回答
4566 浏览

scala - 玩!框架:自定义运行哪些测试

我有戏!2 用于 Scala 应用程序,我正在使用 Specs2 进行测试。我可以使用test命令运行所有测试,或者使用test-only MyParticularSpec.

我想做的是标记一些特定的规范,甚至是规范中的单个方法,以便执行以下操作:

  • 运行所有非集成的测试(即不访问外部资源)
  • 在写入模式下运行所有​​不访问外部资源的测试(但仍在运行读取测试)
  • 运行所有测试,但给定一个

等等。

我想这样的事情应该是可行的,也许通过添加一些注释,但我不知道如何去做。

是否存在一种机制来选择性地运行某些测试而不是其他测试?

编辑我在使用时已经回答了自己test-only。命令行选项仍然不适用于该test任务。按照sbt 指南,我尝试创建一个额外的 sbt 配置,比如

这在我传递不带选项的参数时有效,例如当我输入Test.Argument("plan"). 但我无法找到如何传递更复杂的论点。我试过了

可能还有更多。仍然不知道什么是正确的语法。

有谁知道如何将带有选项的参数从 sbt 传递给 specs2?

0 投票
1 回答
408 浏览

scala - 从 Specs2 调用时发生 ClassCastException

我正在 play_2.9.1-2.0.3 上构建一个应用程序使用specs2_2.9.1-1.7.1(与 play 捆绑在一起)进行测试。我有一个看起来像这样的动作:

当我从 curl 向它发送消息时,这可以按预期工作,但是在我的 specs2 测试中,我得到了这个异常:

其中第 16 行是:

这是测试的相关部分:

如果我将createPolldef 更改为:def createPoll() = Action(parse.tolerantText) {

然后我可以通过 specs2 测试使其工作。

有谁知道我做错了什么?理想情况下,我想使用 parse.json 正文解析器,但我希望能够使用规范而不仅仅是 curl 进行测试。谢谢

0 投票
1 回答
8682 浏览

scala - 播放框架2:以json字符串为主体测试请求

我有以下动作

我想测试一下

Web 服务可以正常使用 curl,如下所示:

正确返回新资源

我正在尝试用

但我收到以下错误:

我遵循了关于这个问题的建议:Play 2 - Scala FakeRequest withJsonBody

我错过了什么吗?

--

Kim Stebel 解决方案运行良好,但后来我尝试使用 withJsonBody,如下所示:

我收到以下错误:

任何的想法?

0 投票
1 回答
927 浏览

scala - Specs2:使用 Hamcrest 匹配器

对于用 Java 编写的域对象,我有大量的 Hamcrest 匹配器。我现在正在迁移到 Scala,并希望在 specs2 测试的上下文中重用这些现有的匹配器。

给定 Foo 类的 Hamcrest 匹配器:

我希望能够这样使用它:

等等。

Specs2 似乎有相反的情况,它的 Matcher[T] 特征到 org.hamcrest.Matcher 的适配器,但我正在寻找相反的方式。

有任何想法吗?

0 投票
1 回答
1844 浏览

scala - 当我添加对 Specs2 的依赖项时,为什么我的一些使用 Mockito 的 ScalaTest 测试会失败?

我最近在一个项目中添加了对 Specs2 的依赖,并注意到一些使用 ScalaTest 和 Mockito 编写的现有测试失败了。删除 Specs2 后,这些测试再次通过。为什么会这样?

失败的测试都使用了 Mockito,并且都设置了一个带有两个不同参数的模拟方法。对模拟的调用之一不返回它设置的值。下面的例子失败了。进一步的要求是类型必须是 Function1 (或具有应用方法)。

输出:

0 投票
2 回答
3786 浏览

scala - 为什么 Specs2 以随机顺序运行这些“顺序”测试?

我正在尝试将旧数据库测试套件从 Specs 迁移到Specs2。然而,Specs2 以一种奇怪的顺序运行测试(从我的角度来看),这会破坏测试,因为它们会更改数据库状态,并运行某些代码两次。

在下面找到测试的简化版本。据我了解,测试应该按以下顺序运行:(因为我已经指定了顺序):
! 222,,但是! 333! 444
实际发生的是它们按以下顺序执行:
! 333,,! 222! 444

以下是测试:

这是所有println输出:

还有我的两个问题:

  1. 为什么不! 222先执行?

  2. 怎么可能sssstart eeeend输出两次?规范是一个对象并且没有创建两次?

奇怪的是,如果我从测试中移除副作用——即移除variableN并将测试主体替换为ok——测试以正确的顺序运行。

版本详细信息:我正在使用 Paly Framework 2.1-SNAPSHOT(2012 年 10 月 28 日的版本 203df0e)和 Scala 2.10.0-RC1 运行这些测试。我认为Play捆绑的Specs2版本是1.12版本,因为该inline方法可用,并且是在1.12(-SNAPSHOT)中添加的,参见https://github.com/etorreborre/specs2/issues/87并且没有后Specs2 版本。

(哦,如果你认为我应该完全重写测试,那么看看这个问题:How design a Specs2 database test, with interdependent tests?

0 投票
3 回答
1705 浏览

scala - 如何设计具有相互依赖的测试的 Specs2 数据库测试?

是否有一些首选方法来设计Specs2测试,其中有很多测试取决于先前测试的结果?

下面,您将找到我当前的测试套件。我不喜欢var测试片段之间的 s。不过,它们是“需要的”,因为某些测试会生成 ID 号,后续测试会重复使用这些 ID 号。

  1. 我应该将 ID 号存储在 Specs2 上下文中,还是创建一个单独的对象来保存所有可变状态?并且只在规范对象中放置测试片段?还是有更好的方法?

  2. 如果测试失败,我想取消相同深度的剩余测试。我可以让测试片段相互依赖吗?(我知道我可以在单个测试片段中取消剩余的匹配器(通过使用可变测试或通过orSkip),但是取消整个片段呢?)

.