Mockito - NullpointerException при использовании метода заглушки
Поэтому я начал писать тесты для нашего Java-Spring-проекта.
Я использую JUnit и Mockito. Говорят, что когда я использую опцию when () ... thenReturn (), я могу имитировать сервисы, не моделируя их или около того. Итак, что я хочу сделать, это установить:
when(classIwantToTest.object.get().methodWhichReturnsAList(input))thenReturn(ListcreatedInsideTheTestClass)
Но независимо от того, когда я делаю предложение, я всегда получаю исключение NullpointerException, что, конечно, имеет смысл, потому что input имеет значение null.
Также, когда я пытаюсь смоделировать другой метод из объекта:
when(object.method()).thenReturn(true)
Там я также получаю Nullpointer, потому что методу нужна переменная, которая не установлена.
Но я хочу использовать when () .. thenReturn (), чтобы обойти создание этой переменной и так далее. Я просто хочу убедиться, что если какой-либо класс вызывает этот метод, то несмотря ни на что, просто верните true или список выше.
Это в основном недоразумение с моей стороны, или что-то не так?
Код:
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();
}
}
И вот мой тестовый класс:
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);
}