2016-05-21 6 views
2

Spock nicht Spock erkennt keine Methodenaufruf

doTip Methodenaufruf erkennt (I für einige "wo" Blöcke geteilt müssen.)

Gebraucht neuestegroovy und spock.

Warum ist dieser Code falsch?

Wie reparieren?

import spock.lang.Shared 
import spock.lang.Specification 

class Test extends Specification { 
def controller 
@Shared 
String g = "" 
@Shared 
def tip = Mock(Tip) 

def "test"() { 
    controller = new TController(tip: tip) 
    when: 
    controller.transform(g) 

    then: 
    1 * tip.doTip(_) 
} 
} 

class Tip { 
def doTip(String f) {} 
} 

class TController { 
Tip tip 

def transform(String g) { 
    tip.doTip(g) 
} 
} 

Antwort

2

Verwenden setup() die mock zu erstellen, wie unten dargestellt:

@Grab(group='org.spockframework', module='spock-core', version='1.0-groovy-2.4') 

import spock.lang.* 

class Test extends Specification { 
    def controller 
    @Shared String g = "" 
    @Shared tip 

    def setup() { 
     tip = Mock(Tip) 
    } 

    def "test"() { 
     given: 
     controller = new TController(tip: tip) 

     when: 
     controller.transform(g) 

     then: 
     1 * tip.doTip(_) 
    } 
} 

class Tip { 
    def doTip(String f) {} 
} 

class TController { 
    Tip tip 

    def transform(String g) { 
     tip.doTip(g) 
    } 
} 

Ergebnis

JUnit 4 Runner, Tests: 1, Failures: 0, Time: 78