1

I can't figure out why I'm getting a NPE where I've marked it below. I've mocked the call to the private method getLastAcceptedVersion and the public call to queryDao.getStatus. To add, I'm only learning about Java 8 lamdas at the moment, I guess this has something to do with where I'm going wrong.

public class myClass {

//members

public Optional<Object> getLastAccepted(Long id, Integer version) {
    return Optional.ofNullable(getLastAcceptedVersion(id, version))
            .map(v -> queryDao.getStatus(id, v));  ------ NULLPOINTEREXCEPTION
   }

}

And my test case:

private MyClass myClass = PowerMockito.spy(new MyClass());
private QueryDao queryDao = mock(QueryDao.class);
private Object obj = mock(Object.class);

@Test
public void testGetLastAccepted() throws Exception{
    PowerMockito.doReturn(1).when(myClass, "getLastAcceptedVersion" , anyLong(), anyInt());
    when(queryDao.getRegulatoryReportingStatusbyTradeId(anyLong(), anyInt())).thenReturn(obj);
    assertNotNull(myClass.getLastAccepted(anyLong(), anyInt()));
}

Stacktrace:

java.lang.NullPointerException
    at dao.MyClass.lambda$getLastAccepted$0(myClass .java:57)
    at java.util.Optional.map(Optional.java:215)
    at dao.MyClass.getLastAccepted(myClass .java:57)
notAChance
  • 1,360
  • 4
  • 15
  • 47

0 Answers0