Der folgende Beispielcode:Wie kann ich in dem ‚where:‘ einen Range statt Liste angeben Block einer Spock Spezifikation
class MySpec extends spock.lang.Specification {
def "My test"(int b) {
given:
def a = 1
expect:
b > a
where:
b << 2..4
}
}
führt den folgenden Kompilierungsfehler: „where-Blöcke nur Parametrisierungen enthalten (z 'Gehalt < < [1000, 5000, 9000]; salaryk = Gehalt/1000')“
sondern eine Liste anstelle einer Strecke unter Verwendung von:
where:
b << [2,3,4]
Kompilierungen und läuft fin e wie erwartet.
Kann ich irgendwie auch einen Bereich angeben?
Danke! Irgendwelche Einblicke, warum Sie die Klammern brauchen? – AndrewW
<< hat eine höhere Priorität als .., also b << 2..4 wird interpretiert als (b << 2) .. 4. Dies schlägt fehl, weil 2 nicht iterierbar ist, bevor es aufgrund von Fehlern fehlschlägt. Siehe http://docs.codehaus.org/display/GROOVY/JN2535-Control – loteq
Vielen Dank für den Link und die Erklärung. In der Dokumentation befinden sie sich in derselben Zeile (<< >> >>> .. .. <). Bedeutet das, dass sie den gleichen Vorrang haben und daher von links nach rechts interpretiert werden, was zum Scheitern führt? Das macht auch Sinn für mich. – AndrewW