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)