2013-03-05 19 views
13

döngüler. Ben foo veya bar ya da başka bir şey var mıyım farketmez, test her zaman yeşildir :) Bu döngüler farklı olarak test edilmeli, ör. hepsiyle'?Spock birim test Sonra fıkrada döngüler ile bir test var o zaman maddede

result.every { 
    it.name.contains("foo") 
    it.entity.subEntity == "bar" 
} 

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: 
Spec expression: 1: expecting '}', found '==' @ line 1, column 61. 
    s("foo") it.entity.rootEntity == "bar" } 

nasıl doğru şekilde test döngüler kullanmalıdır: Ama 'her' 'herkesin' atar istisna değişen? Ben açık assert ifadeleri kullanmak 0,7-groovy-2,0 Spock

cevap

22

Ya kullanıyorum:

result.each { 
    assert it.name.contains("foo") 
    assert it.entity.subEntity == "bar" 
} 

Ya every içinde tek boolean ifade:

result.every { 
    it.name.contains("foo") && it.entity.subEntity == "bar" 
} 
+3

Uyarı! İlk yaklaşım, daha okunabilir hata mesajları üretecektir, ancak 'sonuç' boş koleksiyonunda 'false' (ve işlem başarısız) olarak değerlendirilecektir! – Hubbitus

+0

Ek uyarı: Eğer "her" ye geçtiğiniz kapak birden fazla satıra sahipse, ikinci yöntem şu anda çözülmemiş bir hataya (https://github.com/spockframework/spock/issues/253) girebilir. – jonnybot