Я пишу юнит-тест, используя спок.При создании тестового примера я высмеиваю объекты и заглушаю вызовы функций ответом.Но когда вызовы-заглушки выполняются в подчиненном классе / классе обслуживания, методы-заглушки возвращают нулевое значение вместо фактического значения.Если я попытаюсь получить доступ к значению-заглушке в тестовом классе, я смогу получить к нему доступ, но в классе-заглушке оно возвращает нулевое значение для моей заглушки.
Ниже приведен пример, который я выполняю
class Test extends Specification{
def ServiceClass = new ServiceClass()
def "test doSomething method"(){
given:
String id = "id"
def cacheService = Mock(CacheService)
def obj = Mock(CacheObj)
cacheService.get(_) >> obj
obj.getValue("thisID") >> "test" //stubbing this to return test
when:
//calling dosomething() method of service class
cacheService.doSomething(id)
then:
//checking assertions here
}
}
class ServiceClass{
public String doSomething(String id){
Object obj = cacheService.get(id);
String val = obj.getValue("thisID") // while executing this, val is returning **null**, but it should ideally return "test" as it is stubbed in specification class
}
}
Ожидаемый ответ: " test ", но он возвращает значение NULL. Это место, где я объявляю заглушки неправильными?Потому что, если я объявлю это в методе setupSpec (), все будет работать как положено.