Spock:在一项功能中测试下降和成功调用?

Spock: testing falling and successfull invocations in one feature?

鉴于我想用两个参数测试我的方法:一个应该导致成功,另一个应该导致异常。

写类似..

when:
myObject.myMethod(value);

then:
result

where:
value      | result
new Good() | notThrown(Exception)
new Bad()  | thrown(Exception)

.. 在 Spock 中是不可能的。

如何修复它并避免编写两个单独的特征方法?

import spock.lang.*

class MyFirstSpec extends Specification {

    def "let's try this!"() {
        when:
        new Test().method('Good')

        then:
        noExceptionThrown()

        when:
        new Test().method('Bad')

        then:
        thrown(Exception)
    }

    class Test {
        def method(String param) {
            if(param == 'Good') {
                return param
            }

            throw new Exception()
        }
    }
}

测试一下here