Я пытаюсь дополнить существующий Java-проект некоторым Groovy, начиная с тестов.Итак, допустим, у меня есть ServiceA (класс Java), который зависит от ServiceB (другой класс Java);это передается как ссылка в конструкторе:
public class ServiceA {
private ServiceB serviceB;
public ServiceA(ServiceB seviceB){
this.serviceB = serviceB;
}
public boolean doSomeWork(){
//some logic
return serviceB.doMoreWork();
}
}
Предположим, что serviceB.doMoreWork () возвращает true
.
Чтобы протестировать ServiceA, я хочу смоделировать ServiceB с помощью MockFor
@Test
void testDoSomeWork(){
def mocker = new MockFor(ServiceB) //1 create the Mock support
mocker.demand.doMoreWork(2){ //2 twice for this demonstration
false //3 return other value than in real code
}
mocker.use {
def mockServiceB = new ServiceB() //4 creates mock instead of real one
assert !mockServiceB.doMoreWork() //5 that's good!
def serviceA = new ServiceA(mockServiceB)
assert !serviceA.doSomeWork() //6 that fails! Real implementation called!
}
}
Как видите, тот же объект действует как макет в # 5 и как реальный объект в # 6.Я предполагаю, что это как-то связано с тем, что это Java Object, а не GoovyObject.Что дает?
Спасибо!
Варух.