Mockito - NullpointerException ao stubbing Método
Então comecei a escrever testes para o nosso projeto Java-Spring.
O que eu uso é JUnit e Mockito. Dizem que quando eu uso a opção when () ... thenReturn () eu posso zombar de serviços, sem simulá-los ou algo parecido. Então, o que eu quero fazer é definir:
when(classIwantToTest.object.get().methodWhichReturnsAList(input))thenReturn(ListcreatedInsideTheTestClass)
Mas, independentemente da cláusula when, sempre recebo uma NullpointerException, o que, obviamente, faz sentido, porque a entrada é nula.
Além disso, quando tento zombar de outro método de um objeto:
when(object.method()).thenReturn(true)
Também recebo um Nullpointer, porque o método precisa de uma variável que não está definida.
Mas eu quero usar when () .. thenReturn () para contornar a criação dessa variável e assim por diante. Eu só quero ter certeza de que, se alguma classe chamar esse método, não importa o quê, retorne true ou a lista acima.
É basicamente um mal-entendido do meu lado, ou há algo mais errado?
Código:
public class classIWantToTest implements classIWantToTestFacade{
@Autowired
private SomeService myService;
@Override
public Optional<OutputData> getInformations(final InputData inputData) {
final Optional<OutputData> data = myService.getListWithData(inputData);
if (data.isPresent()) {
final List<ItemData> allData = data.get().getItemDatas();
//do something with the data and allData
return data;
}
return Optional.absent();
}
}
E aqui está a minha aula de teste:
public class Test {
private InputData inputdata;
private ClassUnderTest classUnderTest;
final List<ItemData> allData = new ArrayList<ItemData>();
@Mock
private DeliveryItemData item1;
@Mock
private DeliveryItemData item2;
@Mock
private SomeService myService;
@Before
public void setUp() throws Exception {
classUnderTest = new ClassUnderTest();
myService = mock(myService.class);
classUnderTest.setService(myService);
item1 = mock(DeliveryItemData.class);
item2 = mock(DeliveryItemData.class);
}
@Test
public void test_sort() {
createData();
when(myService.getListWithData(inputdata).get().getItemDatas());
when(item1.hasSomething()).thenReturn(true);
when(item2.hasSomething()).thenReturn(false);
}
public void createData() {
item1.setSomeValue("val");
item2.setSomeOtherValue("test");
item2.setSomeValue("val");
item2.setSomeOtherValue("value");
allData.add(item1);
allData.add(item2);
}