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);


}

Antworten auf die Frage(22)

Ihre Antwort auf die Frage