9
votes

Comment réinitialiser une méthode statique moquée à Groovy?

J'ai ce qui suit dans la configuration du test: xxx

et dans le nettoyage de test: xxx

mais lorsque le prochain test fonctionne , quand il essaie d'exécuter RestClient.postasxml, il circule dans un StackOverflowerror: xxx

Il ressemble à RestClient.postasxml de pointe de manière récursive à elle-même. Quelle est la bonne façon de réinitialiser une méthode statique moquée?


2 commentaires

Voici une question similaire précédente: Stackoverflow.com/questions/920582/...


Vous pouvez réinitialiser la métaclasse - voir cette question qui a des réponses Stackoverflow.com/questions/1612569/...


3 Réponses :


1
votes

L'indice de Schmolly159 au-dessus m'a conduit à la solution suivante: xxx

puis pour réinitialiser la méthode: xxx


0 commentaires

6
votes

Dans un test d'unité, je définis souvent la métaclasse sur null dans le détriment () qui semble permettre à la classe de fonctionner comme il a été initialement sans mes modifications.

Exemple: xxx

Si vous utilisez Junit4, vous pouvez utiliser @Afterclass dans ce cas qui a peut-être plus de sens.


0 commentaires

4
votes

Je trouve que définir simplement .mettaclass = null code> fonctionne pour moi.

SPOCK Exemple: p>

def "mockStatic Test"(){
  given:
  RestClient.metaClass.static.postAsXml = {
    String uriPath, String xml ->
    return 65536
  }

  when:
  //some call that depends on RestClient.postAsXml

  then:
  //Expected outcomes

  cleanup:
  //reset metaclass
  RestClient.metaClass = null
}


1 commentaires

Merci - J'utilise trop SPOCK et en définissant la classe.metaclass.'static'.Method à NULL n'a pas fonctionné mais définir la classe.Métaclass à NULL a fait.