java - Mockito.when().thenReturn() 不起作用或返回 null

标签 java mockito option-type

在测试期间抛出 NullPointerException。我尝试调试它,唯一解决的问题是 eventOptional 始终为 null。就像 Mockito.when().thenReturn() 不起作用一样。有人可以帮忙吗?这是我用于测试服务和测试本身的代码:

@Service
public class EventService {

    @Autowired 
    public EventService(EventRepository eventRepository) {
        this.eventRepository = eventRepository;
    }
    //...
    public void updateEvent(EventDTO eventDTO) {
        Optional<Event> eventOptional = eventRepository.findOneById(eventDTO.getId());

        eventOptional.orElseThrow(() -> new BadRequestException(EVENT_NOT_FOUND));
        //...
    }
}

和测试类:

@RunWith(MockitoJUnitRunner.class)
public class EventServiceTest {

    @Mock
    private EventRepository eventRepository;
    @InjectMocks
    private EventService eventService;

    private Event sampleEventFromDb;

    @Before
    public void setUp() throws Exception {

        MockitoAnnotations.initMocks(this);
    }

    @Test
    public void shouldUpdateEventTestAndWithProperTime() throws Exception {
        EventDTO eventDTOMock = Mockito.mock(EventDTO.class);

        sampleEventFromDb = Event.builder()
            .name("name")
            .startDateTime(LocalDateTime.now())
            .placeName("place")
            .description("description")
            .publicEvent(true)
            .owner(new User())
            .build();

        Mockito.when(eventRepository.findOneById(anyString())).thenReturn(Optional.of(sampleEventFromDb));
        Mockito.when(eventDTOMock.getId()).thenReturn("1");

        eventService.updateEvent(eventDTOMock); //NullPointerException
        //...
    }
}

最佳答案

我遇到了同样的错误,在尝试了很多方法之后,我通过将 anyString() 方法替换为 any() 来修复它

试试这个:

Mockito.when(eventRepository.findOneById(any())).thenReturn(Optional.of(sampleEventFromDb));

关于java - Mockito.when().thenReturn() 不起作用或返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37011328/

相关文章:

ios - Swift 单元测试 - 在展开 Optional 值时意外发现 nil

java - Optional.ofNullable() 中的空指针异常

java - IntelliJ 如何删除类里面丢失的包

java - 哪些语言可以很好地替代 Java?

java - 模拟以 String 作为参数的方法 Mockito

java - 如何在 Spring Boot 中测试对外部 api 的调用

junit - 尽管给出不同的答案来调用实际方法以返回静态方法执行

Java 8 lambda null 检查用法

java - 无法在 NetBeans 中构建 GWT 项目

java - 如何让用户设置背景颜色?