J'ai une classe Groovy similaire àGroovy: stub tapé référence
class MyClass {
Foo foo
}
Dans certaines circonstances, je ne veux pas initialiser foo et que vous voulez écraser tous les appels à elle. Toutes les méthodes qui renvoient une valeur ne devraient rien faire. Je pouvais le faire comme ceci:
Foo.metaClass.method1 = {param -> }
Foo.metaClass.method2 = { -> }
Foo.metaClass.method3 = {param1, param2 -> }
Bien que cela fonctionne, il a quelques problèmes
- Ennuyeux et de longue haleine, surtout si Foo a beaucoup de méthodes
- Cela bouchonner appels à une instance de foo (pas seulement foo)
Bien que Groovy fournit une classe StubFor, si je fais ceci:
this.foo = new groovy.mock.interceptor.StubFor(Foo)
Je reçois une ClassCastException à l'exécution. Bien que cela fonctionnerait si je pouvais redéfinir foo comme:
def foo
Mais pour des raisons que je pas ici, je ne peux pas le faire.
Merci, Don