带有 Spring-boot stubbing 的 Spock 无法正常工作
Spock with Spring-boot stubbing doesn't work correctly
我想在 spring 引导项目中编写 spock 单元测试。当我尝试存根存储库时,它 doesn/t 工作正常。
我调试了它,在测试方法中,存根看起来是正确的,return 预期结果。但是当我们在服务 class eventMemberService.eventMembers
上调用方法时,它的 return "real" 数据不是来自存根...它有什么问题吗?
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)
EventMemberService
不是模拟,你期待什么?也许您忘记将存储库存根注入该服务。如果你这样做,它应该工作。 ;-)
我想在 spring 引导项目中编写 spock 单元测试。当我尝试存根存储库时,它 doesn/t 工作正常。
我调试了它,在测试方法中,存根看起来是正确的,return 预期结果。但是当我们在服务 class eventMemberService.eventMembers
上调用方法时,它的 return "real" 数据不是来自存根...它有什么问题吗?
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)
EventMemberService
不是模拟,你期待什么?也许您忘记将存储库存根注入该服务。如果你这样做,它应该工作。 ;-)