问题标签 [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.
scala - Specs2 - 如何为 Given/When/Then 步骤定义复杂对象
Specs2 的文档和示例显示了一些关于在验收测试中使用 Given/Then/When 样式的代码。
这里是其中之一:
但是,它只处理Int
这里的一些原始对象(正常,因为它是一个样本)。
但是如何处理复杂的对象呢?使用Datatables
?
理想的做法是在一些“夹具”文件中定义定义复杂对象的数据表(或类似事物)。
User
定义“Mik”的外部数据表
我想创建一个像这样的给定语句:
什么是好的做法以及 Specs2 目前提供了什么?
scala - 是否可以将字符串匹配器与 specs2 Json 匹配器结合使用?
在 specs2 测试中,我正在使用 JSON 匹配器验证 json 字符串。我知道可以使用正则表达式来匹配这样的值
是否有可能以一种简洁的方式使用其他字符串匹配器(例如包含)?
鉴于这个混乱的例子:
这个匹配器
看起来比
这不是正确的表达方式,但在这种情况下可能会起作用。
unit-testing - 如何减少 specs2 中的故障显示
我正在尝试使用 specs2 比较两个非常大的数组。不幸的是,当数组不相等时,它会在实际和预期下显示每个数组的内容。无论如何,我可以减少为实际和预期显示的数据量,或者仅针对此特定测试将其完全删除。
我试过使用 setMessage 但这不会影响实际和预期的部分。
我实际上想要做的是比较两个输入流。我也很想知道是否有人对如何做到这一点而不是将它们转换为数组有更好的想法。
scala - 无法在 shell 中使用 sbt 运行基于命名空间的特定测试规范
作为 CI 构建的一部分,我正在尝试从 shell 运行我的 specs2 测试。当我在本地 Windows 机器上运行以下命令时,它会运行适当的规范:在 Unit 命名空间中定义的规范。
但是,在我的构建机器(ubuntu)上,它似乎忽略了仅测试的命名空间参数,因此运行了所有测试。单引号似乎没有什么区别。当我进入 sbt 控制台然后执行命令(仅测试单元。*)时,它按预期工作。
任何建议,将不胜感激。
scala - 将 Specs2 与 FluentLenium Api 一起使用时出错
我使用 Scala 2.10、Specs2 13.1-SNAPSHOT 和 Play2 Framework 2.1 提供的 FluentLenium Api。
我的IntegrationSpec
文件中有这行代码,找到一个子元素(根据 FluentLenium 规范):
该行导致以下编译错误:
由于泛型,它是一种......不兼容的Scala / Java吗?还是我没有弄清楚的正常行为?
然而,这一行(省略任何匹配器)可以很好地编译:
scala - 如何跳过 specs2 中的“应该”块/片段?
假设我有一个以“单元”样式定义的 specs2 规范,如下所示:
是否有一种简单的方法可以跳过/禁用/标记等待中的所有示例 should block/fragment for myMethod
?
显然,我可以从块中的每个单独的示例调用pendingUntilFixed
或返回pending
,但是对于具有许多规范的块来说,这将是相当乏味的。
MyClass.myMethod
如果难以实施并受到打击,这似乎是一种常见的情况。在specs2中是否有另一种方法可以做到这一点?
scala - 带有招摇支持的 scalatra 应用程序的 spec2 测试失败
在具有 swagger 支持的 scalatra 应用程序上调用原型 spec3 测试用例时,测试失败。
这是测试/规范代码:ServletSpec.scala
TestController 看起来像:package com.newco
sbt 测试失败并出现以下错误(没有可用的详细跟踪):[error] x 应该返回成功 [error] ' [error] [error] [error] Error 500 com.acme.TestController [error] [error] [error]
HTTP 错误:500
[错误]访问 /api/account 时出现问题。原因:[错误]
p> [错误]Powered by Jetty:// [error]
[error] [error] [error] ' [error] 不等于...
scala - 在没有 @RunWith(classOf[JUnitRunner]) 舞蹈的情况下运行所有测试?
有什么方法可以设置 IntelliJ 的 JUnit“运行所有测试”命令来自动获取 Scala Specs2?即删除此片段中的样板注释:
必须记住添加这个非常烦人。
我见过SpecificationWithJUnit
,但这也有点像 hack(并且与 不兼容TestKit
)。我正在寻找一个 maven/sbt/intelliJ 方面的解决方案。
scala - 在 Play 2.1 和 Scala 中为文件上传编写测试用例
我找到了以下问题/答案:
在 Play 2.0 FakeRequest 中测试 MultipartFormData
但似乎在 Play 2.1 中情况发生了变化。我试过像这样调整这个例子:
但是,每当我尝试运行请求时,都会收到一个空指针异常:
如果我尝试仅用路由替换已弃用的 routeAndCall(并删除结果周围的选项),我会收到一个编译错误,指出它无法将 MultipartFormData[TemporaryFile] 的实例写入 HTTP 响应。
在使用 Scala 的 Play 2.1 中设计此测试的正确方法是什么?
编辑:尝试修改代码以仅测试控制器:
但是我现在在结果周围的所有测试条件上都出现类型错误,如下所示:
我不明白为什么要获取映射到结果的字节数组的交互器。这可能与我使用自定义正文解析器的方式有关吗?我的控制器的定义如下所示:
使用这篇文章中的表单解析器:Pulling files from MultipartFormData in memory in Play2 / Scala
scala - 如何按顺序运行规范
我想创建一些与数据库互操作的规范。
数据库在每个示例之前和之后创建和删除(按顺序执行)。一切都按预期工作,直到只有一个规范适用于数据库。因为规范是并行执行的,所以它们会干扰并失败。
我希望我能够通过指示 specs2 按顺序运行具有副作用的测试,同时保持无副作用的测试并行运行来避免这种情况。可能吗?