问题标签 [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.
specs2 - ScalaCheck 选择无需替换
如何编写一个Gen[A]
永远不会返回相同对象两次的使用 ScalaCheck?
可以重复选择同一个对象,所以这是行不通的。
我在 specs2 中编写了一个可变规范,我想这样做的原因是,在某种意义上,被测系统的行为应该只允许每个对象“使用”一次。
编辑:“相同”我的意思是根据 相同==
,并且对象实际上是字符串,所以我不能每次都创建相同的字符串。
scala - 从 specs2 中失败的 Scalacheck 属性中识别完全失败的匹配
我正在运行一个 specs2 测试套件sbt
,使用该test
命令。当 ScalaCheck 属性失败时,我只会在我的代码中看到 specs2 匹配失败的文件名和行号——当它碰巧是一种实用方法时,它不是很有用,它执行我经常做的一种常见类型的检查. 堆栈跟踪会更好。
我已经last
在 sbt 中尝试过该命令,但这并没有显示我正在寻找的堆栈跟踪。唯一的堆栈跟踪last
显示是这个通用的:
我还在 java.util.logging 属性文件中启用了 FINEST 日志记录级别。
现在,我正在使用 Eclipse 调试器解决这个问题,但在某些情况下,它是不必要的重量级。
scala - scala specs2错误:匿名不等于scala.collection.immutable
我正在运行以下测试
我收到以下错误
这是我正在尝试测试的方法
我可以用这个丑陋的黑客解决它
但我确信有更好的方法来做到这一点......
- 编辑 -
对不起,这是我的一个愚蠢的错误(应该是 List("internet", "tecnologia") 代替)
无论如何,错误消息非常具有误导性,这就是我将这个问题留在这里的原因......
scala - 玩!框架:自定义运行哪些测试
我有戏!2 用于 Scala 应用程序,我正在使用 Specs2 进行测试。我可以使用test
命令运行所有测试,或者使用test-only MyParticularSpec
.
我想做的是标记一些特定的规范,甚至是规范中的单个方法,以便执行以下操作:
- 运行所有非集成的测试(即不访问外部资源)
- 在写入模式下运行所有不访问外部资源的测试(但仍在运行读取测试)
- 运行所有测试,但给定一个
等等。
我想这样的事情应该是可行的,也许通过添加一些注释,但我不知道如何去做。
是否存在一种机制来选择性地运行某些测试而不是其他测试?
编辑我在使用时已经回答了自己test-only
。命令行选项仍然不适用于该test
任务。按照sbt 指南,我尝试创建一个额外的 sbt 配置,比如
这在我传递不带选项的参数时有效,例如当我输入Test.Argument("plan")
. 但我无法找到如何传递更复杂的论点。我试过了
可能还有更多。仍然不知道什么是正确的语法。
有谁知道如何将带有选项的参数从 sbt 传递给 specs2?
scala - 从 Specs2 调用时发生 ClassCastException
我正在 play_2.9.1-2.0.3 上构建一个应用程序并使用specs2_2.9.1-1.7.1(与 play 捆绑在一起)进行测试。我有一个看起来像这样的动作:
当我从 curl 向它发送消息时,这可以按预期工作,但是在我的 specs2 测试中,我得到了这个异常:
其中第 16 行是:
这是测试的相关部分:
如果我将createPoll
def 更改为:def createPoll() = Action(parse.tolerantText) {
然后我可以通过 specs2 测试使其工作。
有谁知道我做错了什么?理想情况下,我想使用 parse.json 正文解析器,但我希望能够使用规范而不仅仅是 curl 进行测试。谢谢
scala - 播放框架2:以json字符串为主体测试请求
我有以下动作
我想测试一下
Web 服务可以正常使用 curl,如下所示:
正确返回新资源
我正在尝试用
但我收到以下错误:
我遵循了关于这个问题的建议:Play 2 - Scala FakeRequest withJsonBody
我错过了什么吗?
--
Kim Stebel 解决方案运行良好,但后来我尝试使用 withJsonBody,如下所示:
我收到以下错误:
任何的想法?
scala - Specs2:使用 Hamcrest 匹配器
对于用 Java 编写的域对象,我有大量的 Hamcrest 匹配器。我现在正在迁移到 Scala,并希望在 specs2 测试的上下文中重用这些现有的匹配器。
给定 Foo 类的 Hamcrest 匹配器:
我希望能够这样使用它:
等等。
Specs2 似乎有相反的情况,它的 Matcher[T] 特征到 org.hamcrest.Matcher 的适配器,但我正在寻找相反的方式。
有任何想法吗?
scala - 当我添加对 Specs2 的依赖项时,为什么我的一些使用 Mockito 的 ScalaTest 测试会失败?
我最近在一个项目中添加了对 Specs2 的依赖,并注意到一些使用 ScalaTest 和 Mockito 编写的现有测试失败了。删除 Specs2 后,这些测试再次通过。为什么会这样?
失败的测试都使用了 Mockito,并且都设置了一个带有两个不同参数的模拟方法。对模拟的调用之一不返回它设置的值。下面的例子失败了。进一步的要求是类型必须是 Function1 (或具有应用方法)。
输出:
scala - 为什么 Specs2 以随机顺序运行这些“顺序”测试?
我正在尝试将旧数据库测试套件从 Specs 迁移到Specs2。然而,Specs2 以一种奇怪的顺序运行测试(从我的角度来看),这会破坏测试,因为它们会更改数据库状态,并运行某些代码两次。
在下面找到测试的简化版本。据我了解,测试应该按以下顺序运行:(因为我已经指定了顺序):
! 222
,,但是! 333
,! 444
实际发生的是它们按以下顺序执行:
! 333
,,! 222
! 444
以下是测试:
这是所有println
输出:
还有我的两个问题:
为什么不
! 222
先执行?怎么可能
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?)
scala - 如何设计具有相互依赖的测试的 Specs2 数据库测试?
是否有一些首选方法来设计Specs2测试,其中有很多测试取决于先前测试的结果?
下面,您将找到我当前的测试套件。我不喜欢var
测试片段之间的 s。不过,它们是“需要的”,因为某些测试会生成 ID 号,后续测试会重复使用这些 ID 号。
我应该将 ID 号存储在 Specs2 上下文中,还是创建一个单独的对象来保存所有可变状态?并且只在规范对象中放置测试片段?还是有更好的方法?
如果测试失败,我想取消相同深度的剩余测试。我可以让测试片段相互依赖吗?(我知道我可以在单个测试片段中取消剩余的匹配器(通过使用可变测试或通过orSkip),但是取消整个片段呢?)
.