пахотный прыжок издевательская пружина
У меня есть bean:
@Service
public class EQueueBookingService {
@Autowired
public EQueueBookingClient eQueueBookingClient;
И я пытаюсь написать несколько тестов для этого компонента EQueueBookingService, используя Spock. https://code.google.com/p/spock/wiki/SpockBasics
Мой макет
class EQueueBookingServiceTest extends Specification {
@Autowired
EQueueBookingService testedService;
EQueueBookingClient eQueueBookingClient = Mock(EQueueBookingClient);
def setup() {
testedService.eQueueBookingClient = eQueueBookingClient;
}
и метод испытания:
...
setup:
CancelBookingResponse response = new CancelBookingResponse();
...
eQueueBookingClient.cancelBooking(_, _) >> response;
when:
def result = testedService.cancelBooking(request);
then:
result != null && result.bookId == bookId
Почему eQueueBookingClient не издевается?
Когда я его отлаживаю: в тесте - я вижу экземпляр Mock, когда я перехожу к методу - я вижу реальный экземпляр bean.
Большое спасибо!
Я нашел решение!
необходимо установить сеттер для этого клиента и использовать его в настройке, например:
private EQueueBookingClient eQueueBookingClient = Mock(EQueueBookingClient);
def setup() {
testedService.setBookingClient(eQueueBookingClient);
}
Если определить клиента в сервисе как общедоступный и использовать = он не работает; Например:
testedService.eQueueBookingClient = eQueueBookingClient;//mocked instance doesn't work