有 | 是 | 这么多 | Spock | spec如何使用其标签的示例,例如:
// when -> then label combo
def "test something"() {
when:
// blah
then:
// blah blah
}
Run Code Online (Sandbox Code Playgroud)
这样的标签组合如下:
when - > thengiven- > when- >thenexpectgiven - > expect但我无处可以找到有关这些标签的合法 /有意义组合的文档.例如,我可以:
def "do something"() {
when:
// blah
expect:
// blah
}
Run Code Online (Sandbox Code Playgroud)
我可否?我不知道.关于什么:
def "do something else"() {
when:
// blah
then:
// blah
expect:
// blah
where:
// blah
}
Run Code Online (Sandbox Code Playgroud)
我可否?再说一次,我不知道.但我想知道.
小智 15
我实际上是您提到的其中一个教程的作者.我认为最好回答你的问题是真正了解特定标签的用途.也许那时为什么某些组合有意义而其他组合没有意义会更明显.请参阅原始文档http://spockframework.github.io/spock/docs/1.0/spock_primer.html.它很好地解释了所有标签及其用途.它还附带此图:
我希望它应该已经告诉了你很多.因此,例如,何时和期望标签都没有多大意义.该预期标签被设计来取代这两个时和随后.其背后的原因在文档中得到了很好的解释:
期望块[...]在单个表达式中描述刺激和预期响应更自然的情况下非常有用.
Spock本身不允许你使用这种组合.如果您尝试执行以下代码.
def "test"() {
when:
println("test")
expect:
1==1
}
Run Code Online (Sandbox Code Playgroud)
您将收到这样的错误消息.
启动失败:/Users/wooki/IdeaProjects/mylibrary/src/test/groovy/ExampleTest.groovy:13:这里不允许'期望'; 相反,使用以下之一:[和,然后] @第13行,第9列.
令我惊讶的是,你的第二个例子有效.但是我相信在这里使用期望并没有太大的收获,而是像往常一样.
def "do something else"() {
when:
// stimulus
then:
// 1st verification
and:
// 2nd verification
where:
// parametrization
}
Run Code Online (Sandbox Code Playgroud)
唯一的理由,期望或与后接着是验证内部执行代码的结果分离负责编码时的标签.例如,对以某种方式相互关联的验证进行分组,或者甚至将单个验证分开,但有可能使用可附加到Spock中的标签的字符串为其提供描述.
def "do something else"() {
when:
// stimulus
then: "1 is always 1"
1 == 1
and: "2 is always 2"
2 == 2
}
Run Code Online (Sandbox Code Playgroud)
因此,由于您已经开始声明测试的验证部分开始(使用然后阻止),我会坚持并标记以分离更多代码.
关于其中的标签.它有点像循环指示器.所以,无论你使用之前,你可以在最后的时刻把标签的组合,其中标签.这个实际上不是单个测试运行的一部分,它只是强制执行测试多次运行.
同样可以有这样的东西:
def "test"() {
given:
def value
when:
value = 1
then:
value == 1
when:
value = 2
then:
value == 2
}
Run Code Online (Sandbox Code Playgroud)
使用上述方法,只需确保您的测试不是"测试太多".意思是这可能是你使用两组时间的原因 - 然后为这个测试做一个完美的借口,实际上分成两个单独的测试.
我希望至少回答你的一些问题.
| 归档时间: |
|
| 查看次数: |
2883 次 |
| 最近记录: |