2014-11-13 12 views
6

Özellik yönteminde, bir when: bloğundaki özellik eylemi belirtilir, bunun sonucu bir sonraki then: satırında test edilir. Genellikle given: maddesinde (veya setup: veya fikstür yönteminde) yapılan hazırlık gerekir. Önkoşulları içermek de eşit derecede faydalıdır: Bunlar, özellik testine konu olmayan koşullardır (bu nedenle when: - then: veya expect: numaralı telefonlarda olmamalıdır), fakat testin anlamlı olması için gerekli koşulları belgeliyor/belgeliyorlar. Örneğin, aşağıdaki aptal özellikleri inceleyiniz:Spock özellik yöntemlerinde önkoşullar için iyi bir stil nedir?

import spock.lang.* 

class DummySpec extends Specification { 
    def "The leading three-caracter substring can be extracted from a string"() { 
    given: "A string which is at least three characters long" 
    def testString = "Hello, World" 

    assert testString.size() > 2 

    when: "Applying the appropriate [0..2] operation" 
    def result = testString[0..2] 

    then: "The result is three characters long" 
    result.size() == 3 
    } 
} 

Bu önkoşullar için önerilen uygulama nedir? Örnekte assert kullandım ancak bir Specta assert s üzerine birçok kaşlarını çattım.

+3

Bu ne yaparım olduğunu. İhtiyaç duyulduğunda spesifikasyonda 'assert 'kullanımıyla ilgili yanlış bir şey yoktur (hala bir Spock koşulu değil, Groovy iddiası değil). –

cevap

6

Hep böyle senaryolar için expect kullanıyorum:

@Grab('org.spockframework:spock-core:0.7-groovy-2.0') 
@Grab('cglib:cglib-nodep:3.1') 

import spock.lang.* 

class DummySpec extends Specification { 
    def "The leading three-caracter substring can be extracted from a string"() { 
    given: "A string which is at least three characters long" 
    def testString = "Hello, World" 

    expect: "Input should have at least 3 characters" 
    testString.size() > 3 

    when: "Applying the appropriate [0..2] operation" 
    def result = testString[0..2] 

    then: "The result is three characters long" 
    result.size() == 3 
    } 
} 
+1

Cevabınız için teşekkürler, @opal, ben aslında kendimi tercih etmeyi tercih ediyorum ve @ peter-niederwieser'in tavsiyelerini takip ediyorum. –