Mockito - NullpointerException beim Stubben von Method
lso habe ich angefangen Tests für unser Java-Spring-Projekt zu schreibe
Was ich benutze, ist JUnit und Mockito. Es heißt, wenn ich die Option when () ... thenReturn () verwende, kann ich Dienste verspotten, ohne sie zu simulieren. Also, was ich tun möchte, ist zu setzen:
when(classIwantToTest.object.get().methodWhichReturnsAList(input))thenReturn(ListcreatedInsideTheTestClass)
Aber egal welche when-Klausel ich mache, ich bekomme immer eine NullpointerException, was natürlich Sinn macht, da die Eingabe null ist.
Auch wenn ich versuche eine andere Methode von einem Objekt zu verspotten:
when(object.method()).thenReturn(true)
Dort bekomme ich auch einen Nullpointer, da die Methode eine Variable benötigt, die nicht gesetzt ist.
Aber ich möchte when () .. thenReturn () verwenden, um diese Variable zu erstellen und so weiter. Ich möchte nur sicherstellen, dass wenn irgendeine Klasse diese Methode aufruft, egal was passiert, einfach true oder die obige Liste zurückgegeben wird.
Ist es ein grundsätzliches Missverständnis von meiner Seite, oder stimmt etwas anderes nicht?
Code
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();
}
}
Und hier ist meine Testklasse:
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);
}