Testing 斯波克公司;Spock报告:如何在标签/块中打印有价值的变量
我的工作对象是:Testing 斯波克公司;Spock报告:如何在标签/块中打印有价值的变量,testing,spock,spock-reports,Testing,Spock,Spock Reports,我的工作对象是: 斯波克堆芯 斯波克报道 斯波克弹簧 springmvc测试 我有以下代码: def "findAll() Expected"(){ given: "The URL being used is: /personas/xml/personas" url = PersonaUrlHelper.FINDALL; when: "When the URL is being calling with a GET" resultAct
- 斯波克堆芯
- 斯波克报道
- 斯波克弹簧
- springmvc测试
def "findAll() Expected"(){
given: "The URL being used is: /personas/xml/personas"
url = PersonaUrlHelper.FINDALL;
when: "When the URL is being calling with a GET"
resultActions = mockMvc.perform(get(url)).andDo(print())
then: "something..."
resultActions.andExpect(status().isOk())
.andExpect(content().contentType(RequestMappingProducesJsonUtf8.PRODUCES_JSON_UTF_8))
}
两项意见:
One:观察给定:“使用的URL是:/personas/xml/personas”
,其中URL/URI值是手动添加的
Two:url
变量是如何定义实例变量的,因为它在许多测试方法中很常见。因此def字符串url
我的问题是:
如何在Spock的标签/块中显示url
变量?(那么)怎么给?它将通过斯波克报告打印,并改进我的测试文档
我读了以下内容:
它围绕着@Unroll工作。但我确实意识到了所有围绕where
标签/块的工作
我已经尝试过类似的方法:
given: "The URL being used is: $url"
given: "The URL being used is: ${url}"
而且不起作用
我希望使用类似以下的语法:
def "findAll() Expected"(){
url = PersonaUrlHelper.FINDALL;
given: "The URL being used is: $url"
…. something
when: "When the URL is being calling with a GET"
那么正确的配置是什么呢
Asume我对一些Spring的@RequestMapping
和本测试方法中使用的PersonalHelper.FINDALL
进行重构。我不想手动更新给定标签/块中的文本
那么正确的语法是什么呢?快速回答:
我想其中
块方法将是正确的方法。使用类似
where: "When the URL is being calling with a GET"
url << PersonaUrlHelper.FINDALL
另一种更黑客的方法是通过一个println url
打印url
——这个输出也会被捕获,但不会那么好
更新:请查看以下spock控制台脚本:
导入spock.lang*
类PersonalUrlHelper{
最终静态字符串FINDALL='1〕http://example.com'
}
类MyFirstSpec扩展了规范{
@展开
def“findAll()应为#url”(){
给定:“正在使用的URL为:#URL”
当:“当URL(#URL)被分配给
defa=url
然后:“a等于URL(#URL)”
a==url
其中:“在本例中,URL是从另一个类或映射获取的”
url我已经测试了你的解决方案,它不起作用。首先,我收到一个错误,关于我不能在最新的之后声明,然后是。变量总是空的。我刚刚修复了输入错误-最后一个块应该是where
-对不起。我还将看看我是否有时间自己测试我的答案,以确定还有其他问题…请继续关注…谢谢!有两个问题(1)在之后无法使用,然后
(2)您的url请查看添加的详细信息。关于空指针
-我猜它是由您的FINDALL
帮助程序方法产生的。请确保它不会返回空
-它应该返回一个列表,或者,如果它返回单个项目,则将其放入[]
brakets正如我在我的示例中所做的那样。您好@rdmueller您的代码现在可以工作了。继续将您的代码粘贴到此处,以应用您的答案是否正确。是的,诀窍是[]
@Unroll
def "findAll() Expected"(){
given: "The URL being used is: #url"
//removed url definition
when: "When the URL is being calling with a GET"
resultActions = mockMvc.perform(get(url)).andDo(print())
then: "something..."
resultActions.andExpect(status().isOk())
.andExpect(content().contentType(RequestMappingProducesJsonUtf8.PRODUCES_JSON_UTF_8))
where: "When the URL is being calling with a GET"
url << [PersonaUrlHelper.FINDALL]
}
import spock.lang.*
class PersonalUrlHelper {
final static String FINDALL = 'http://example.com'
}
class MyFirstSpec extends Specification {
@Unroll
def "findAll() Expected #url "(){
given:"The URL being used is: #url"
when: "When URL (#url) is assigned to a"
def a = url
then: "a equals the URL (#url)"
a == url
where: "the URL is fetched from another class or map in this case"
url << [PersonalUrlHelper.FINDALL]
}
}