Mock méthode statique avec GroovyMock ou similaire dans Spock

First-timer ici, toutes mes excuses si j'ai oublié quelque chose.
Je suis l'espoir d'obtenir autour d'un appel à une méthode statique à l'aide de Spock. Commentaires serait grand

Avec groovy se moque, je pensais que je serais en mesure de passer l'appel statique, mais n'ont pas trouvé.
Pour le fond, je suis dans le processus de rénovation des tests en héritage java. Le Refactoring est interdite. Je suis l'aide de spock-0.7 avec groovy-1.8.

L'appel à la méthode statique est enchaîné avec une instance d'appel dans le présent formulaire:

public class ClassUnderTest{

public void methodUnderTest(Parameter param){
  //everything else commented out
Thing someThing = ClassWithStatic.staticMethodThatReturnsAnInstance().instanceMethod(param);
   }

}

staticMethod retourne une instance de ClassWithStatic
instanceMethod retourne la Chose nécessaire dans le reste de la méthode

Si je exercer directement le mondial se moquer, il renvoie l'instance factices ok:

def exerciseTheStaticMock(){
    given:
    def globalMock = GroovyMock(ClassWithStatic,global: true)
    def instanceMock = Mock(ClassWithStatic)

    when:
    println(ClassWithStatic.staticMethodThatReturnsAnInstance().instanceMethod(testParam))

    then:
    interaction{
        1 * ClassWithStatic.staticMethodThatReturnsAnInstance() >> instanceMock
        1 * instanceMock.instanceMethod(_) >> returnThing
    }
}

Mais si je lance le methodUnderTest de la ClassUnderTest:

def failingAttemptToGetPastStatic(){
    given:
    def globalMock = GroovyMock(ClassWithStatic,global: true)
    def instanceMock = Mock(ClassWithStatic)
    ClassUnderTest myClassUnderTest = new ClassUnderTest()

    when:
    myClassUnderTest.methodUnderTest(testParam)

    then:
    interaction{
        1 * ClassWithStatic.staticMethodThatReturnsAnInstance() >> instanceMock
        1 * instanceMock.instanceMethod(_) >> returnThing
    }
}

Il jette une véritable instance de ClassWithStatic qui finit par échouer dans sa instanceMethod.

source d'informationauteur alexgibbs