我正在使用Spock框架進行測試,並且我有一個關於where子句中的multivaraible賦值的問題。spock測試的where子句中的多個賦值?
我有以下的測試案例:
def "sending a message delegates to message sender"() {
when:
sendMessage(x,y)
then:
1 * messageSender.send(x,y)
where:
x << 1
y << 2
}
我想用一個單一的賦值運算符在where子句中,以取代多個變量賦值。我想:
where:
[x,y] << [1,2]
,但有一個MissingMethod例外。我認爲這是因爲表達式[1,2]被視爲數組而不是列表。
注意,下面的工作:
where:
[x,y] << [1,2].combinations()
看來,組合()方法返回一個列表類型,但儘管以下沒有工作:
where:
[x,y] << [1,2].asList()
使用組合()是違反直覺的,所以我想知道是否有一個簡單,優雅的方式來初始化多個變量s在Spock中。
編輯:我使用的斯波克版本0.7 Groovy的2.0
多重賦值語法是'(x,y)= [1,2]'是否有效 –
實際上,我只看了一下文檔,對於Spock它看起來像'[x,y] = [ 1,2]'應該改爲 –
感謝您的評論。 '(x,y)= [1,2]'產生錯誤*,其中塊可能只包含參數化*,並且'[x,y] = [1,2]'產生錯誤* ListExpression是一個壞表達式分配運營商的LHS *。 –