问题标签 [spock]

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

grails - 在 Grails 1.3.7 中使用 Geb、Selenium 和 Spock 进行功能测试时出错

我正在尝试使用 Grails 1.3.7、Geb、Spock 和 Selenium 运行功能测试。这是我的 BuildConfig.groovy 文件:

测试代码是这样的:

登录页面.groovy:

GeneralSpec.groovy:

现在,当尝试使用 FirefoxDriver 运行此测试时,我收到此错误:

我已经尝试运行这个简单的测试一周了,但是,所有这些版本和异常都让我非常困惑。如果有人可以提供帮助,我将不胜感激。

谢谢

0 投票
4 回答
2759 浏览

email - 如何在 Spock 中模拟特定领域的闭包

我想测试一个使用 grails 电子邮件插件发送电子邮件的 Grails 控制器。我不知道如何模拟sendMail闭包以使交互起作用。这是我最新版本的测试代码:

控制器代码看起来像您期望的那样,例如:

如果我运行这个测试,我会得到 0multipart次交互调用而不是 1 次。该given:块的第二行对我来说似乎很可疑,但如果我尝试模拟 aClosure而不是org.springframework.mail.MailMessage我的测试崩溃。我还应该提到控制器本身按预期工作(它等不及我先弄清楚单元测试)。

已编辑

啊哈,几个小时后重新看代码,我明白为什么上面的代码不起作用了;为了让我捕捉multipart和其他 DSL 调用,我必须模拟闭包本身,而不是 sendMail 方法(我不能这样做,因为闭包是在控制器本身内部定义的)。我可能能做的是检查方法的参数sendMail看看所有必要的东西都传递给它。

0 投票
0 回答
602 浏览

unit-testing - 如何使用 Spock/Build-Test-Data 对包含“where”或使用“namedquery”的方法进行单元测试?

我尝试了几种组合,但我无法测试依赖于 Grails 'where' 查询或 'named-query' 的方法。

顺便说一下,使用 Grails 2.0.3!

服务代码

测试

我缺少什么来成功对我的“where”查询或“named-queries”进行单元测试?

我得到的错误似乎与关联的属性有关。groovy.lang.MissingMethodException:没有方法签名:grails.gorm.CriteriaBuilder.cities() 适用于参数类型:

当只查询名称时,它似乎有效.. :(

0 投票
2 回答
6151 浏览

java - 如何在 Spock 中模拟 HttpServletRequest

我们有一个 ServletFilter,我们想用 Spock 进行单元测试并检查对 HttpServletRequest 的调用。

以下代码抛出 java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/servlet/http/Cookie

JavaEE 5 API(以及因此的 Servlet API)位于类路径中。Spock 版本是 0.6-groovy-1.8。

我们将如何正确地做到这一点?它可以与 Mockito 一起使用,但我们会失去 Spock 嘲笑的魅力。

编辑:我们知道 Grails 和 Spring 内置的 Servlet 模拟功能,我们只想知道是否有办法使用 Spock 模拟。否则,您将混合使用模拟设置技术...

0 投票
2 回答
677 浏览

grails - 在 IntelliJ 中使用 Easyb 或 Spock 在 Grails 项目中“测试一点,编写一点代码”

这篇文章完美地描述了我的原始问题:我想遵循 TDD:

  • 写一个小测试
  • 看它失败
  • 编写足够的代码以使其成功
  • 看它成功
  • 重复

我正在 IntelliJ 中从事 Grails 项目。如果我只想编写普通的 JUnit 测试,上面的帖子可以解决所有问题:

  • 前往 /test/unit
  • 将一些测试代码放在“class Xyz extends GroovyTestCase”类中
  • 按 Shift F10
  • JUnit 报告在一两秒内弹出

问题是我想使用一种非常酷的“英语描述”测试设置,比如 Easyb 或 Spock。

我该怎么办?从 Grails 为我创建的自动生成的测试类开始,然后将 Spock 的东西塞进其中,这将是一件神奇的事情。显然我不能两次使用“扩展”。这是否给出了我正在尝试做的事情的要点?

0 投票
1 回答
769 浏览

unit-testing - 类似于 Mockito 对 Spock 的回答?

在 Mockito 中,有一种很好的方法可以从与 mock 的交互中获得编程答案。例如,我们可以对 mock 进行编程以返回传递给它的方法调用的参数:

有没有办法在 Spock 中做同样的事情?

0 投票
0 回答
365 浏览

unit-testing - 如何对使用带有序列的域对象的工件进行单元测试?

我正在为我的服务编写测试(使用 Grails 2.0.4/Spock/Build-Test-Data 插件),这些服务使用其中包含序列的域对象。挑战在于该序列在单元测试中不起作用,所以我想知道如何解决这个问题?

示例:域对象

示例:测试

测试将简单地失败,因为域对象内的 transactionId 可能不可为空。域类中的序列没有按预期工作并返回 null。我错过了什么吗?或者有没有其他方法可以让序列在单元测试中按预期工作?

提前致谢。

0 投票
2 回答
6491 浏览

scala - Spock 嘲笑 Akka 的 ActorRef

我试图为一个类做一个 Spock 测试,我需要检查它是否向演员发送了一条消息(比如statActor)。我知道 Akka 有专门的集成测试库,但对于非常简单的测试来说似乎太多了。所以,我试过:

目标方法如下所示:

我以为 Spock 会使用方法创建模拟tell。但在运行此测试后,我得到:

为什么它调用真正的ActorRef实现?某种与 Scala 的不兼容?有什么方法可以模拟这样的课程吗?

0 投票
1 回答
1946 浏览

grails - Spock 框架与 Grails 1.3.8 中的其他插件有冲突

我已经在 Grails 1.3.8 应用程序上安装了 Spock。运行测试应用程序后失败。它似乎与我的其他插件有一些冲突,但我无法弄清楚。我安装了 20 多个插件。

错误是:

这是我的构建配置:

如果我不安装任何插件,我可以毫无问题地运行 spock 测试。我不确定其中一个插件是否有特定的东西,或者关于 Spock 的东西,甚至是我做错了什么。

附加信息:我发现出于某种原因,一个/多个插件阻止 Grails 下载

spock-grails-support:0.6-groovy-1.7

使用我的插件,Grails 只下载 spock-grails-support:0.6-groovy-1.8 而不是 1.3.8 所需的 1.7。所以现在我不确定是什么阻止了 Grails 下载依赖项。

感谢您的任何建议

0 投票
5 回答
7717 浏览

grails - 如何重复 Spock 测试?

如此处所述 @Repeat目前不支持注释。如何将 spock 测试标记为重复 n 次?

假设我有 spock 测试:

如何将其标记为重复 n 次?