J'ai ce qui suit dans la configuration du test: et dans le nettoyage de test: p> mais lorsque le prochain test fonctionne , quand il essaie d'exécuter RestClient.postasxml, il circule dans un StackOverflowerror: p> 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? P> p>
3 Réponses :
L'indice de Schmolly159 au-dessus m'a conduit à la solution suivante: puis pour réinitialiser la méthode: p>
Dans un test d'unité, je définis souvent la métaclasse sur Exemple: p> Si vous utilisez Junit4, vous pouvez utiliser null code> dans le
détriment () code> qui semble permettre à la classe de fonctionner comme il a été initialement sans mes modifications.
@Afterclass code> dans ce cas qui a peut-être plus de sens. P > p>
Je trouve que définir simplement 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
}
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.
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/...