- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在使用 spock 对我的 java 项目进行单元测试,但遇到了问题。我有一个实用方法可以从 http 请求中获取参数,或者如果 http 请求为空并尝试用 spock 测试它,则为空字符串。我的测试是这样的:
package foo.bar.test
import foo.bah.HttpRequestPropertyLoader
import spock.lang.Unroll
import javax.servlet.http.HttpServletRequest
import spock.lang.Specification
class HttpRequestPropertyLoaderTest extends Specification {
HttpRequestPropertyLoader subjectUnderTest
def result
def setup() {
subjectUnderTest = new HttpRequestPropertyLoader()
}
@Unroll("When my http request is #nullOrNot then when I get parameter from it the response=#response" )
def "Test load data from request"() {
given:
HttpServletRequest mockHttpRequest = Mock()
mockHttpRequest.getAttribute("foo") >> "bar"
when:
result = subjectUnderTest.loadStringFromHttpRequest(httpRequest, "foo")
then:
result == response
where:
httpRequest | response | nullOrNot
null | "" | "null"
mockHttpRequest | "bar" | "not null"
}
}
groovy.lang.MissingPropertyException: No such property: mockHttpRequest for class: foo.bar.test.HttpRequestPropertyLoaderTest at foo.bar.test.HttpRequestPropertyLoaderTest.Test load data from request(HttpRequestPropertyLoaderTest.groovy)
where
块在
given
之前运行块,因此出现错误,但只是想知道是否有解决方法?
@Shared
注释该变量。注释,这对我来说似乎是不好的做法。每个测试都应该与其他测试完全分开运行,所以不要真的想要一个对象来保持它在测试之间的状态。
最佳答案
按照 tim_yates 建议查看 https://code.google.com/p/spock/issues/detail?id=15#c4 ,我找到了一个相当优雅的解决方案,它不涉及使用 @Shared
注解。测试定义现在看起来像这样:
package foo.bar.test
import foo.bah.HttpRequestPropertyLoader
import spock.lang.Unroll
import javax.servlet.http.HttpServletRequest
import spock.lang.Specification
class HttpRequestPropertyLoaderTest extends Specification {
HttpRequestPropertyLoader subjectUnderTest
def result
def setup() {
subjectUnderTest = new HttpRequestPropertyLoader()
}
@Unroll("When my http request is #nullOrNot then when I get parameter from it the response=#response" )
def "Test load data from request"() {
when:
result = subjectUnderTest.loadStringFromHttpRequest(httpRequest, "foo")
then:
result == response
where:
httpRequest << {
HttpServletRequest mockHttpRequest = Mock()
mockHttpRequest.getAttribute("foo") >> "bar"
[null, mockHttpRequest]
}()
response << ["", "bar"]
nullOrNot << ["null", "not null"]
}
}
关于unit-testing - 在阻止的 spock 测试中抛出 MissingPropertyException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31473809/
如果一个对象没有属性并且我正在访问该属性,我们会得到一个 MissingPropertyException .我可以做一些类似于安全 null ( ?. ) 的事情来防止丢失属性,这样它就不会抛出异常
我遇到一个奇怪的错误,使我整个早晨都挂断了电话。我有一个带有Person类的Grails应用程序,如下所示: class Person { String id Date l
我对 Groovy 完全陌生,只是在运行这个程序时遇到了一些麻烦。我想要做的就是将一个列表的所有元素添加到另一个列表中,但我什至无法在方法中访问我想要的变量。 我在这里四处寻找答案,但对于我对 Gro
如果一个对象没有属性,而我正在访问该属性,我们会得到一个MissingPropertyException。我可以做一些类似于安全 null (?.) 的事情来防止丢失属性,这样它就不会抛出异常吗? 最
我有一个域名类,一直在正常工作。但是现在我添加了Long属性,所有操作都从那里开始。 这是事故域类定义: class Accident { String fullDescription
在groovy文件中,我导入了jars groovy.util.logging.Log4j和 org.apache.log4j.Level以使用@Log4j,并将日志级别设置为:构造函数中的 log.
我一直在尝试在groovy上使用动态脚手架来查看Tasks列表。我的网域类别如下 package projecttracker import java.util.Date; class Task {
如何避免在 Map 中的模板中缺少参数时发生 MissingPropertyException 并将未找到的值替换为 null? import groovy.text.StreamingTemplat
我正在做一个 groovy 教程,我使用了“Programming Groovy”一书中的代码。我使用书中的以下代码来了解 Groovy 中的事件处理程序: +++++++++++++++++++++
我正在使用Groovy / Grails工具套件版本:3.6.4.RELEASE与Grails2.4.4和JRE1.8。 在一个非常简单的脚手架项目中,我有一个名为Book的域类,并试图创建一个复合键
当我在 GroovyConsole 中执行以下脚本时,它给了我一个 MissingPropertyException 但我不明白为什么: def a = 'A' def b() { print
我有一个简单的类,它根据简单的规则构建 RequestMessage。 如果在数据库中找到MessageMetadata,则会使用该元数据构建消息。 否则,消息将使用提供元数据的服务构建。 这是该类以
我一直在使用 spock 对我的 java 项目进行单元测试,但遇到了问题。我有一个实用方法可以从 http 请求中获取参数,或者如果 http 请求为空并尝试用 spock 测试它,则为空字符串。我
我在 groovy 中编写了以下测试(同时使用 spock 框架): def "#checkPassword check if passwd match"() { given: def
我正在尝试在 Jenkins 中编写管道脚本,因为我只想存储来自 Docker Repo 的图像名称,但在 Unix cmd 中,代码正在运行,但在管道脚本中,我收到如下错误:groovy.lang
我正在下面的 Controller 上进行集成测试,这是一个通用项目,用于在Web probject上为FAQ创建类别。并且以下测试返回“groovy.lang.MissingPropertyExce
我正在尝试调试Grails应用程序。不幸的是,我没有上述语言的经验。 当我执行 grails generate-all org.example.Book 时,我得到了一个模糊的错误: Generati
我的印象是闭包作为被调用的实际类(而不是实现父类(super class))运行,因此在某些变量不可见时中断(例如父类(super class)中的私有(private)变量)。 例如 package
我正在开发一个在 Groovy 脚本中加载的 Java 项目。一切都按预期工作,除了引用其他 groovy 脚本(在本例中为实用程序类)的 groovy 脚本。每当执行包含所述实用程序类的脚本时,插件
我已经创建了多分支管道(声明式)并将 jenkinsfile 放在 bitbucket 存储库中。配置为触发构建管道的 Hook 。当开发人员提交代码管道时,它会抛出以下错误。 [Bitbucket]
我是一名优秀的程序员,十分优秀!