2016-08-09 6 views
2

У меня есть абстрактный сервис:Groovy метакласса, насмехаясь методом обслуживания, который имеет броски пункта

abstract class ParentService {  
    abstract Map someMethod() throws NumberFormatException  
} 

И еще один сервис, который простирается выше класс:

class ChildService extends ParentService { 
    @Override   
    Map someMethod() throws NumberFormatException { 
     //Business Logic 
    } 
} 

Я хочу издеваться someMethod() с помощью заводного метакласса , Мне нужно высмеять этот метод для написания тестовых примеров для ChildService. Это то, что я сделал для насмешки:

ChildService.metaClass.someMethod = { -> "Mocked method" }
Но это не работает, и вызов всегда выполняет фактический метод из службы. Что нужно сделать здесь? Я что-то упускаю?
Обратите внимание, что я должен высмеивать только один метод, а не весь сервис.

ответ

0

Возможно, вы могли бы просто издеваться над методом на примере?

def child = new ChildService() 
child.metaClass.someMethod = { -> "Mocked method" } 
+0

Я тоже пробовал, но не повезло. – UjjawalG

+0

Я попытался воспроизвести его, и он работал, поэтому причина, по которой он не работает, должен быть где-то еще. Можете ли вы показать весь свой метод тестирования? Вы также можете попытаться изменить «Mocked method» на карту. Может быть, он не работает из-за несоответствия типа возврата? –

Смежные вопросы