Ich habe einen abstrakten Service:Groovy metaclass, eine Service-Methode spöttisch, die hat throws-Klausel
abstract class ParentService {
abstract Map someMethod() throws NumberFormatException
}
Und eine anderen Dienst, die über Klasse erweitert:
class ChildService extends ParentService {
@Override
Map someMethod() throws NumberFormatException {
//Business Logic
}
}
I someMethod()
mit groovy Metaklasse verspotten wollen . Ich muss diese Methode zum Schreiben von Testfällen für ChildService
verspotten. Dies ist, was ich getan habe, um zu spotten:
ChildService.metaClass.someMethod = { -> "Mocked method" }
Aber das funktioniert nicht und der Aufruf führt immer aktuelle Methode aus dem Dienst. Was muss hier gemacht werden? Fehle ich etwas?
Bitte beachten Sie, dass ich nur eine Methode verspotten muss, nicht den gesamten Service.
Ich versuchte das auch, aber kein Glück. – UjjawalG
Ich habe versucht, es zu reproduzieren und es funktionierte, also Grund, warum es nicht funktioniert, muss woanders sein. Können Sie Ihre gesamte Testmethode zeigen? Sie können auch versuchen, die "Mocked-Methode" zu ändern. Vielleicht funktioniert es nicht, weil die Rückgabetypen nicht übereinstimmen? –