Спок с заглушкой Spring-boot работает неправильно - PullRequest
0 голосов
/ 20 июня 2019

Я хотел бы написать спок модульного теста в проекте весенней загрузки.Когда я пытаюсь заглушить репозиторий, он не работает правильно.

Я отлаживаю его и в методе теста заглушка выглядит правильно, возвращает ожидаемый результат.Но когда мы вызываем метод класса обслуживания eventMemberService.eventMembers, он возвращает "реальные" данные не из заглушки ... Что с ним не так?

import com.ostrouchprzemyslaw.willyoube.repositories.EventMemberRepository
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.context.SpringBootTest
import spock.lang.Shared
import spock.lang.Specification

@SpringBootTest
class EventMemberServiceImplTest extends Specification {

    @Shared
    EventMember eventMember

    @Autowired
    EventMemberService eventMemberService

    EventMemberRepository eventMemberRepository = Stub(EventMemberRepository.class)

    def setupSpec(){
        eventMember = new EventMember()
        eventMember.firstName = 'Przemek'
        eventMember.lastName = 'Ostrouch'
        eventMember.email = 'przemek@gmail.com'
    }

    def "When call getEventMembers it list all members"() {

        given:
        def mockListOfMembers = new ArrayList<EventMember>()
        mockListOfMembers.add(eventMember)

        when:
        eventMemberRepository.findAll() >> mockListOfMembers
        def result = eventMemberService.eventMembers

        then:
        result == mockListOfMembers
    }
public class EventMemberServiceImpl implements EventMemberService {

    private EventMemberRepository eventMemberRepository;

    public EventMemberServiceImpl(EventMemberRepository eventMemberRepository) {
        this.eventMemberRepository = eventMemberRepository;
    }

    @Override
    public List<EventMember> getEventMembers() {
        List<EventMember> returnList = new ArrayList<>();
        eventMemberRepository.findAll().forEach(returnList::add);
        return returnList;
    }

Expected result: eventMemberService.eventMembers will return list with one eventMember, but actual result is empty list (there are no any data in DB)

1 Ответ

1 голос
/ 21 июня 2019

EventMemberService это не издевательство, что вы ожидаете? Может быть, вы забыли вставить свою заглушку в этот сервис. Если вы это сделаете, это должно работать. ; -)

...